m68k-semi.c: Use correct check for failure of do_brk()

In the m68k semihosting implementation of HOSTED_INIT_SIM, use the correct
check for whether do_brk() has failed -- it does not return -1 but the
previous value of the break limit.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
This commit is contained in:
Peter Maydell 2011-04-18 16:34:26 +01:00 committed by Riku Voipio
parent 206ae74aea
commit 5382a012e8

View File

@ -370,7 +370,7 @@ void do_m68k_semihosting(CPUM68KState *env, int nr)
TaskState *ts = env->opaque;
/* Allocate the heap using sbrk. */
if (!ts->heap_limit) {
long ret;
abi_ulong ret;
uint32_t size;
uint32_t base;
@ -379,8 +379,9 @@ void do_m68k_semihosting(CPUM68KState *env, int nr)
/* Try a big heap, and reduce the size if that fails. */
for (;;) {
ret = do_brk(base + size);
if (ret != -1)
if (ret >= (base + size)) {
break;
}
size >>= 1;
}
ts->heap_limit = base + size;