diff options
author | aiju <devnull@localhost> | 2018-09-28 22:53:24 +0000 |
---|---|---|
committer | aiju <devnull@localhost> | 2018-09-28 22:53:24 +0000 |
commit | f75bbcdd45358ac00fdf07d0107c87390b28c4cb (patch) | |
tree | 28bc794f8fdc630421a7797dc2fc42223e4d1309 /sys/src/cmd/5e | |
parent | 451b0c7976df9036ee84ad2e51f698dbe7562873 (diff) |
5e: byte access incorrectly checked for long; brk has to round up addresses
Diffstat (limited to 'sys/src/cmd/5e')
-rw-r--r-- | sys/src/cmd/5e/arm.c | 2 | ||||
-rw-r--r-- | sys/src/cmd/5e/sys.c | 1 |
2 files changed, 2 insertions, 1 deletions
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) |