os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

commit 9acc9c83345f5029d4de384ae52960085a26e96c
parent 8a1b8444bd827512d8aee847c211962af1ee1dee
Author: erai <erai@omiltem.net>
Date:   Wed, 15 May 2024 22:53:39 -0400

ignore interrupts until lapic is setup

Diffstat:
Mkernel.c | 37+++++++++++++++++++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)

diff --git a/kernel.c b/kernel.c @@ -191,6 +191,9 @@ bzero(s: *byte, size: int) { } panic(r: *regs) { + var i: int; + var sp: int; + cli(); // ---------------- ---------------- ---------------- ---------------- ---- @@ -252,6 +255,32 @@ panic(r: *regs) { kputh16(r.cs); kputc('\n'); + kputs("backtrace:\n"); + + i = 0; + sp = r.rbp; + loop { + kputh(sp); + kputc(' '); + + if sp >= 0 { + break; + } + + sp = sp:*int[0]; + + i = i + 1; + if i == 8 { + break; + } + + if i & 3 == 0 { + kputc('\n'); + } + } + + kputc('\n'); + loop { hlt(); } @@ -274,7 +303,7 @@ _isr(r: *regs) { } else if (r.trap == 32) { tick(r); outb(IO_PIC1, 0x20); - } else { + } else if (global.lapic) { if (r.trap == 33) { isr_realtek(); } else if (r.trap == 34) { @@ -3533,7 +3562,7 @@ _kstart(mb: int) { brk = brk + 4096; vclear(&global.vga); - //kputs("Starting up\n"); + kputs("Starting up\n"); global.fr = 0:*free_range; global.fp = 0:*free_page; @@ -3679,6 +3708,10 @@ _kstart(mb: int) { // Find ACPI tables xsdt = find_xsdt(); + if !xsdt { + kdie("No xsdt?\n"); + } + mcfg = find_acpi(xsdt, "MCFG"); if !mcfg { kdie("No mcfg?\n");