SWI 0x26 — HardReset¶
- Entry:
0x0000008C(ARM) - Status: verified (hardware-checked 2026-07-08: fixture-driven runs on real GBA via the worker's no-blacklist opcode; see Hardware verification section)
Summary¶
Performs a full BIOS restart: it re-enters the cold-boot code path, so the GBA
behaves as if the console had just been powered on / reset — the BIOS intro
("boot animation") plays and the cartridge is (re)launched. Shares its code with
the reset boot sequence at 0x0000008C. Never returns.
Parameters¶
None used from registers.
Returns¶
Does not return. Ends in a jump to the BIOS post-boot routine at 0x00001929.
Clobbered registers¶
Entire CPU state is reset (all registers, all mode stacks, CPSR).
Algorithm¶
- Switch CPSR to System mode with IRQ+FIQ disabled (mode value
0xDF). - Write
0toREG_IME(0x04000208) to mask interrupts. - Re-initialize the mode stacks via
0x000000E0: SVC SP =0x03007FE0, IRQ SP =0x03007FA0, SYS/USR SP =0x03007F00. - Install the default IRQ handler pointer at
0x03007FFC(a BIOS ROM address is stored there so early interrupts have a valid vector). - Jump to the BIOS boot/post-boot routine at
0x00001929, which runs the startup logic and hands control to the cartridge.
Real constants observed: REG_IME = 0x04000208; handler-pointer slot
0x03007FFC; boot routine 0x00001929.
Edge cases & known bugs¶
- Because this restarts the whole BIOS sequence (including the intro logo), it is heavier than SoftReset (SWI 00h), which jumps straight to a chosen entry point without replaying boot.
Hardware verification (2026-07-08)¶
Fixture-driven runs via the worker's no-blacklist opcode (swf), with
wake sources / handlers installed through CpuSet pokes. Raw data:
results/blacklist_fixtures1.csv.
swf 0x26 rebooted the GBA through the full BIOS boot sequence (intro, then
multiboot-wait). A fresh multiboot upload succeeded ~6 s later without any
power cycle — HardReset genuinely returns the console to the cold-boot BIOS
path, including the multiboot listener.
Cycle count¶
Not measurable (the CPU context does not survive).
Open questions (need hardware verification)¶
- Confirm behavior of the intro/boot routine at
0x00001929under HardReset vs. genuine power-on (e.g. whether logo verification is repeated).
GBATEK cross-reference¶
GBATEK lists SWI 26h as an undocumented "HardReset" that restarts the BIOS boot process; consistent with the observed jump back into the cold-boot code.