sigil-kernel 98a31c0 closes Director issue #108 — two real-silicon boot black-screen bugs: Pi 3B boot was using a hardcoded QEMU framebuffer address instead of the VideoCore IV mailbox property protocol, and x86-64 UEFI boot was reading a hardcoded OVMF address instead of the actual EFI GOP FrameBufferBase. Both now fixed. PI3 bld=1 prs=1 mod=1 K. UEFI gop=1 fld=1 K.
Two real-silicon boot fixes
Pi 3B: VideoCore IV mailbox framebuffer protocol (board_pi3.sg)
The black-screen bug
On real Pi 3B hardware (BCM2837), the framebuffer address is not fixed — it must be negotiated with the VideoCore IV GPU via the ARM-to-VC mailbox property protocol. The prior code used a hardcoded QEMU address, causing a black screen on real silicon.
5-tag property message at 0x3E000000
The fix replaces the hardcode with the proper 5-tag property message at
0x3E000000 (16B-aligned, below PBASE): TAG_SET_PHYS_WH (set physical width/height), TAG_SET_VIRT_WH (set virtual framebuffer dimensions), TAG_SET_DEPTH(32) (set 32-bit colour depth), TAG_GET_FB (request framebuffer allocation — VC responds with the actual physical address), TAG_GET_PITCH (get bytes-per-row).Mailbox channel 8 write + poll
The 104-byte property message is written to
0x3E000000, the mailbox channel 8 (property tags) is written to the mailbox WRITE register, and the response is polled from the mailbox READ register.Bus alias stripping
The VideoCore returns addresses with bit 31 set (0xC0000000 bus alias) —
addr % 1073741824 strips this correctly under both zero-extend and sign-extend peek32 models (a subtlety of cc0's unsigned integer handling). PI3 bld=1 prs=1 mod=1 K.x86-64 UEFI: EFI GOP FrameBufferBase reader (x86_uefi.sg)
The black-screen bug
On real x86-64 hardware, the EFI GOP (Graphics Output Protocol) framebuffer address varies by firmware and hardware — assuming OVMF's fixed address causes a black screen on non-QEMU machines.
gop_fill_boot(gop, boot)
Must be called before
ExitBootServices. Reads the EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE struct via QueryMode/SetMode, then copies FrameBufferBase, PixelsPerScanLine×4 (stride = pitch in bytes), HorizontalResolution, VerticalResolution, and PixelFormat from Mode->Info into the SIGILOS_BOOT struct that the kernel reads after boot services exit.Hardware-agnostic x86-64 boot path
This makes sigilOS's x86-64 boot path hardware-agnostic for any EFI 2.x system with GOP support. UEFI gop=1 fld=1 K.