b38: S21 table-walker router

This commit is contained in:
lumia-emu
2026-09-14 00:34:52 +00:00
parent d3e2efe7ba
commit 8aef555346
5 changed files with 169 additions and 6 deletions
+7 -1
View File
@@ -431,6 +431,12 @@ def main():
# S18 stublet (10B @0x08006D22, b29): poll-epilogue router.
# movw/movt ip + bx ip to sbl_main 0x802f6a9 (post-dispatcher).
mu.mem_write(0x08006D22, bytes.fromhex("4ff2a96cc0f6020c6047"))
# S21 stublet (32B @0x08006D5A, b38): table-walker router.
# [sp+0x24] valid-code? => original pop.w (legit return);
# else b.w S19 (sbl_main post-logger restart, bounded table work).
mu.mem_write(0x08006D5A, bytes.fromhex(
"099b13f0010f09d01a0e082a01d1bde8f09f1a0f082a"
"01d1bde8f09ffff7d9bf"))
# S20 stublet (34B @0x08006D38, b37): clock-dispatcher router.
# [sp+0x2C] valid-code? => original pop.w (legit return);
# else r0=sl (PBL tables) + b.w dispatcher re-run (idempotent math).
@@ -524,7 +530,7 @@ def main():
# --- end parity ---
# stub range is readonly on HW/QEMU: ignore SBL heap-clobber writes,
# keep maze/stublets intact (restore-on-write with reentrancy guard)
STUB_LO, STUB_HI = 0x080068C0, 0x08006D60 # +S7/S9/S10/S16/S17/S18/S20
STUB_LO, STUB_HI = 0x080068C0, 0x08006D80 # +S7/S9/S10/S16/S17/S18/S20/S21
stub_snap = bytes(mu.mem_read(STUB_LO, STUB_HI - STUB_LO))
_inww = [False]
_swn = [0]