From e3f476ccb764df4d844e8a4822abda07d56cbabb Mon Sep 17 00:00:00 2001 From: SashegDev Date: Tue, 15 Sep 2026 08:05:59 +0000 Subject: [PATCH] docs: b41 desert retarget, b42 hang+revert, b43 PBL contract --- docs/sbl-bringup.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/sbl-bringup.md b/docs/sbl-bringup.md index 0182c4f..36f8788 100644 --- a/docs/sbl-bringup.md +++ b/docs/sbl-bringup.md @@ -241,3 +241,21 @@ пропускал): IMEM-стек, чтение за верхом IMEM. Uni не мапил DDRHI, QEMU мапит: добавлен паритет (0x08610000, 16M-64K). b40 на 2M чист, sp живет в DDRHI, unmapped 0. Дефолт run-sbl теперь b40. + +## b41: desert retarget EB90->EB0A (2026-09-14) +- Вызов пустыни шел в середину функции (мимо push.w 48B пролога), + эпилог pop.w снимал чужое (+48B), S20-rerun возвращал в середину: + ловушка +100B/Kinsn. b41 зовет пролог, фрейм балансируется, + пустыня возвращается к вызывающему. sbl_main дошел до 0x802F652 + (SMEM write), пошли фазы строк SBL1, lr в sbl_main. +- Creep остался (~320B/K, равномерный): --sphist показал хвост + враппера S12 (+8B x27/K) и дерево mid-pop. QEMU b41 чист 120с. + +## b42/b43: frameless откачен (2026-09-14) +- b42 убрал push+pop враппера: creep исчез в ноль на 2M, но хвост + bx lr зациклился сам на себя (lr=0x8007B65): push хранит возврат + вызывающего, убирать нельзя. Откат. +- PBL-контракт вместо этого: S12-keep (валидный pushed lr) идет + в хвост (парный pop, баланс), S12-default (мусор) дивертит в + poll-resumption без визита в хвост (блоб 100->132B, uni+QEMU). + Диагностика: --sphist (дельты sp по pc), --tpop (куда уходит pop).