Created the framework for using different loadable panic handlers, loaded by the bootloader. Initial panic handler is panic.serial, which contains its own serial driver and stacktrace code. Other related changes: - Asserts are now based on the NMI handler - panic handlers get installed as the NMI interrupt handler - Changed symbol table generation: now use nm's own demangling and sorting, and include symbol size in the table - Move the linker script argument out of the kernel target, and into the kernel's specific module, so that other programs (ie, panic handlers) can use the kernel target as well - Some asm changes to boot.s to help GDB see stack frames - but this might not actually be all that useful - Renamed user_rsp to just rsp in cpu_state - everything in there is describing the 'user' state
17 lines
369 B
TOML
17 lines
369 B
TOML
name = "panic.serial"
|
|
kind = "exe"
|
|
output = "panic.serial.elf"
|
|
targets = ["kernel"]
|
|
deps = ["kutil", "elf"]
|
|
includes = ["src/kernel/panic.serial", "src/kernel"]
|
|
sources = [
|
|
"display.cpp",
|
|
"entry.s",
|
|
"main.cpp",
|
|
"serial.cpp",
|
|
"symbol_table.cpp",
|
|
]
|
|
|
|
[variables]
|
|
ldflags = ["${ldflags}", "-T", "${source_root}/src/kernel/panic.serial/panic.serial.ld"]
|