diff --git a/sys/src/cmd/5e/arm.c b/sys/src/cmd/5e/arm.c index 2d4c5f2cb..a9acc748b 100644 --- a/sys/src/cmd/5e/arm.c +++ b/sys/src/cmd/5e/arm.c @@ -124,7 +124,7 @@ single(u32int instr) addr += offset; if((instr & fB) == 0) addr = evenaddr(addr, 3); - targ = vaddr(addr, 4, &seg); + targ = vaddr(addr, (instr & fB) == 0 ? 4 : 1, &seg); switch(instr & (fB | fL)) { case 0: *(u32int*) targ = *Rd; diff --git a/sys/src/cmd/5e/sys.c b/sys/src/cmd/5e/sys.c index e7fd7d755..1087116f8 100644 --- a/sys/src/cmd/5e/sys.c +++ b/sys/src/cmd/5e/sys.c @@ -254,6 +254,7 @@ sysbrk(void) v = arg(0); if(systrace) fprint(2, "brk(%#lux)\n", v); + v = v + 7 & -8; if(v >= P->S[SEGSTACK]->start) sysfatal("bss > stack, wtf?"); if(v < P->S[SEGBSS]->start)