b38: S21 table-walker router
This commit is contained in:
+7
-1
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user