b24: world-switch stub + clock S11

This commit is contained in:
SashegDev
2026-09-13 11:29:17 +00:00
parent b06f009dd0
commit d2d180feac
4 changed files with 116 additions and 6 deletions
+12
View File
@@ -91,3 +91,15 @@
- b23: 2M инстр. без падений (sp здоров), sbl_main идёт дальше
(`0x80164C4`-subtree → прыжок в OCIMEM-нули `0x222F84` — фронт PBL-данных).
QEMU-паритет: R15=0x223000, sp=0x85FFF00, lr=0x80164CB — там же.
## b24: world-switch stub, clock S11 (2026-09-12)
- Диспетчер (`0x80164C4`-subtree) зовёт ARM jump-table `0x8007158`
(`ldr pc`), та — в OCIMEM-трамплин world-switch `0x221EF8`
(ARM: save regs, `cps MON`, `mrc`, `ldr sp/pc` из PBL-таблиц
`[0x221F6C]=0x223620`/`[0x221F70]=0x223930` → вызов TZ; TZ не загружен).
Вход получается в Thumb → b24-стаб (4B `movs r0,#0; bx lr`):
возврат 0 в диспетчер (TZ deferred). Перезаписывает голову ARM'а
(восстановимо из ELF).
- Дальше: clock-fn `0x800E960` (udiv-подсчёты) с голым выходом
`pop{r4,pc}` (без push, tail-chain через NOP-идиому) → S11 (b24):
вход → `bx lr` (lr = брошенный-но-валидный `0x80076CD`).