b18: S7 exit router + dstub trap + docs
This commit is contained in:
@@ -41,3 +41,26 @@
|
||||
1. Добить баннер (см. свежий in_asm-хвост).
|
||||
2. Заменить стаблеты настоящим PBL (нужны дампы с живого тела!).
|
||||
3. UEFI (img3, EDK2) — отдельный фронт после SBL1.
|
||||
|
||||
## b18: S7 и цикл delay-helper (2026-09-12)
|
||||
Механизм зацикливания (b17, доказан Unicorn-harness `tools/sbl_uni.py`):
|
||||
- sbl_main → delay-функция `0x8013B78` (256-итераций table-walk, `bl 0x8017AF4`
|
||||
каждую итерацию) → b14 (`0x8017AFC: b.w 0x8005B9E`) → helper `0x8005BB0`
|
||||
→ выход `ldr pc,[sp],#0x14` (0x8005BCA) → S3-слот (0x8013BA5, рестарт).
|
||||
- Эпилог delay (`0x8013BAC: pop {r3-r7,pc}`) снимает 0x18 без push; каждый
|
||||
S3-рестарт съедает 0x18 живого стека. Маршрут: слоты → fill (STUBV →
|
||||
pop pc = maze) → pristine IMEM (нули → null-jump → hook_null → maze →
|
||||
stale lr) → переполнение IMEM (0x8610008).
|
||||
- Heap SBL (stm в 0x8006684) затирает maze/S6/banner (0, 0x7a, STUBV).
|
||||
QEMU: dstub-overlay `[0x08006B80,0x08006C50)` (read = снапшот ELF+стабы,
|
||||
write = игнор). Uni: deferred-restore guard (MEM_WRITE-хук срабатывает
|
||||
ДО записи, restore надо делать в hook_code!).
|
||||
- Maze-blob: `movs r0,#0; lsr ip,lr,#24; cmp #8; bne hang; bx lr`
|
||||
(возврат 0 только для lr из DDRLOW 0x08..., иначе hang).
|
||||
Фикс b18: патч BAC (`f8bd0a4a` → `f3f730b8`, `b.w S7`) + S7-стаблет
|
||||
(52B @ 0x08006C10): `cmp r4,#0xff` → iterate (`0x8013BA5`) или done
|
||||
(restore r4/r5/sl/fp, возврат в sbl_main `0x802f681`). BAE-путь
|
||||
(`[r7]==2`) принесён в жертву (r7=0, недостижим).
|
||||
Фронтир b18: sbl_main возвращается, новый код `0x801Bxxx`
|
||||
(`strb [r7,#2]`-паттерн, b17-NOP на 0x801B71E), падеж pop'ом пустого
|
||||
стека у верха IMEM — следующий фронт.
|
||||
|
||||
Reference in New Issue
Block a user