diff --git a/ape/ape.S b/ape/ape.S index 6a9a08b3e..9ff9f4cd9 100644 --- a/ape/ape.S +++ b/ape/ape.S @@ -250,6 +250,7 @@ pc: cld xor %cx,%cx # current cylinder xor %dh,%dh # current head mov $v_ape_realsectors,%di # total sectors + sub $v_ape_realslacksectors,%di 3: call pcread dec %di jnz 3b @@ -1567,6 +1568,7 @@ kernel: movabs $ape_stack_vaddr,%rsp .ldsvar _end .ldsvar _etext .ldsvar v_ape_realsectors + .ldsvar v_ape_realslacksectors .ldsvar v_ape_highsectors .ldsvar ape_idata_ro .ldsvar ape_pad_rodata diff --git a/ape/ape.lds b/ape/ape.lds index 16d9e1d29..7c020c3ad 100644 --- a/ape/ape.lds +++ b/ape/ape.lds @@ -563,6 +563,9 @@ SHSTUB2(ape_loader_dd_count, HIDDEN(v_ape_realsectors = MIN(0x70000 - IMAGE_BASE_REAL, ROUNDUP(RVA(_edata), 4096)) / 512); +HIDDEN(v_ape_realslacksectors = + v_ape_realsectors - MIN(0x70000 - IMAGE_BASE_REAL, + ROUNDUP(RVA(_edata), 512)) / 512); HIDDEN(v_ape_realpages = v_ape_realsectors / (4096 / 512)); HIDDEN(v_ape_highsectors = (ROUNDUP(RVA(_edata), 512) / 512) - v_ape_realsectors);