Skip to content

Commit b8899fb

Browse files
Merge pull request #1 from UnbreakableMJ/m1-16-path-b
M1-16 Path B: BIOS real-mode I/O closes trampoline gap
2 parents 9981f88 + 8fb49ed commit b8899fb

16 files changed

Lines changed: 2032 additions & 627 deletions

File tree

CHANGELOG.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,42 @@ All dates use ISO 8601 format (YYYY-MM-DD).
1212

1313
## [Unreleased]
1414

15+
### Changed
16+
17+
- **M1-16 Path B**: BIOS boot path lifts every BIOS interrupt
18+
call (INT 13h disk read, INT 15h E820 walk, RSDP scan, MBR
19+
partition lookup, partition bulk-load) into real mode before
20+
CR0.PE in `rm_phaseb_orchestrate`; protected-mode `kmain`
21+
consumes a `BootDataBundle` at phys 0x1000 and never returns
22+
to real mode. The legacy `call_bios_int` 32→real→32
23+
trampoline that returned `AH=0x01` is gated behind the
24+
`legacy_trampoline` Cargo feature.
25+
- New `zamak-core::ram_fat32` walker — concrete-type FAT32
26+
parser over a borrowed `&[u8]` (no trait objects, no
27+
packed-struct casts), with VFAT long-filename reassembly.
28+
Replaces the Path B BIOS path's filesystem layer; UEFI is
29+
unaffected.
30+
31+
### Fixed
32+
33+
- `zamak-bios::utils::{memset, memcpy}` no longer recurse —
34+
the previous Rust-level bodies lowered back into themselves
35+
via `core::ptr::{write_bytes, copy_nonoverlapping}` and hung
36+
on the first non-trivial call. They're now hand-written
37+
`rep stos` / `rep movs` blocks.
38+
- `zamak-bios::paging::setup_paging` ignores non-USABLE e820
39+
entries when sizing the HHDM and caps the mapping at 16 GiB.
40+
QEMU's 1 TiB high-memory MMIO entry would otherwise have
41+
exhausted the 4 MiB bump heap on page-table allocation.
42+
43+
### Re-enabled
44+
45+
- `bios-boot-smoke` test in `zamak-test`'s `boot-smoke` suite,
46+
removed in db68d69 while M1-16 was incomplete. CI now boots
47+
the real BIOS chain (stage1 MBR + stage2 + FAT32 partition)
48+
end-to-end and asserts the `ZAMAK` / `LIMINE_PROTOCOL_OK`
49+
serial sentinels alongside the existing UEFI case.
50+
1551
## [0.8.5] - 2026-04-24
1652

1753
Bundles the M6-3 part 1 boot-phase instrumentation plus a

0 commit comments

Comments
 (0)