Built GDT + IDT + exception handlers
This commit is contained in:
+9
-5
@@ -19,7 +19,10 @@ rather than restate it. Roughly in the order things happen at runtime:
|
||||
5. **[frame-allocator.md](frame-allocator.md) — the physical frame allocator.** The
|
||||
bitmap allocator that hands out and reclaims 4 KiB physical frames from that
|
||||
map — the primitive page tables and the heap will be built on.
|
||||
6. **[halting.md](halting.md) — halting.** Why a kernel can't just "exit", and
|
||||
6. **[interrupts.md](interrupts.md) — interrupts and exceptions.** The GDT and IDT,
|
||||
the exception stubs, and the handler that reports a CPU fault in red instead of
|
||||
letting it triple-fault into a silent reset.
|
||||
7. **[halting.md](halting.md) — halting.** Why a kernel can't just "exit", and
|
||||
how `while (true) hlt` parks the CPU safely once there's nothing left to do.
|
||||
|
||||
Cutting across all of these:
|
||||
@@ -34,9 +37,10 @@ The boot flow ties them together: UEFI runs the loader ([efi.md](efi.md)), which
|
||||
queries the **GOP** to pick a graphics mode ([gop.md](gop.md)), hands the kernel a
|
||||
**framebuffer** to draw into ([framebuffer.md](framebuffer.md)) and a **memory
|
||||
map** of physical RAM ([memory-map.md](memory-map.md)); the kernel turns that map
|
||||
into a **frame allocator** ([frame-allocator.md](frame-allocator.md)), runs — its
|
||||
CPU-specific bits behind the [arch](arch.md) boundary — and when it has finished,
|
||||
or panics, it **halts** ([halting.md](halting.md)).
|
||||
into a **frame allocator** ([frame-allocator.md](frame-allocator.md)), installs
|
||||
its **descriptor tables** so CPU faults are caught ([interrupts.md](interrupts.md)),
|
||||
runs — its CPU-specific bits behind the [arch](arch.md) boundary — and when it has
|
||||
finished, or panics, it **halts** ([halting.md](halting.md)).
|
||||
|
||||
## Source map
|
||||
|
||||
@@ -47,5 +51,5 @@ or panics, it **halts** ([halting.md](halting.md)).
|
||||
| Shared loader↔kernel contract (`BootInfo`, `Framebuffer`, `MemoryMap`, ABI) | `src/root.zig` |
|
||||
| Physical frame allocator | `src/pmm.zig` |
|
||||
| Framebuffer text console | `src/console.zig` |
|
||||
| Arch-specific kernel code (`halt`, linker script) | `src/arch/x86_64/` |
|
||||
| Arch-specific kernel code (`halt`, GDT/IDT, exception stubs, linker script) | `src/arch/x86_64/` |
|
||||
| Build + `run-efi` (QEMU/OVMF) | `build.zig` |
|
||||
|
||||
Reference in New Issue
Block a user