feature: add architecture-agnostic kernel panic (BSOD) engine
Introduce core.panic, a new architecture-agnostic kernel panic engine with a pre-allocated LVGL BSOD screen. The screen and all widgets are created at init time so that zero LVGL allocation occurs at panic time. Layout features: - Top banner with decoded teapot TGA image (128x128) and title/subtitle - Two-column content area with dark semi-transparent cards: - Left: Fault Details, CPU Registers, Process Info, System Info - Right: Call Stack (full height) - Pastel red background (#7A2828), monospace text for data sections Key changes: - Add core.panic.pas with pre-built BSOD screen, register/trace/system info formatting, hex conversion helpers, and syslog fallback - Add arch.x86.panic.pas as the x86 bridge: packs interrupt registers into a TRegisterSnapshot and calls core.panic.panic() - Simplify all 19 x86 fault handlers to one-liner panic calls - Remove legacy BSOD code from arch.x86.util.pas - Add teapot.tga (256x256) embedded via splash_tga.asm - Add LVGL bindings: lv_refr_now, lv_image_create, lv_image_set_src, lv_image_set_scale, lv_image_set_inner_align, and style helpers - Wire up panic init and test command in asuro.pas
This commit is contained in:
1 parent
7abb38ccbe
commit
e55da49900
29 files changed
+1061
-231
No files matched your search
@@ -31,7 +31,7 @@ uses
|
||||
core.strings,
|
||||
terminal,
|
||||
debug.tracer,
|
||||
core.util, arch.x86.util,
|
||||
core.util, arch.x86.util, core.panic,
|
||||
arch.x86.memory.virtual;
|
||||
|
||||
var
|
||||
@@ -171,7 +171,7 @@ begin
|
||||
|
||||
if not ready then begin
|
||||
console.writestringln('Device not ready in time!');
|
||||
BSOD('Device not ready in time!', 'ATA DEVICE NOT READY IN TIME FOR READ COMMAND');
|
||||
core.panic.panic('ATA', 'ATA DEVICE NOT READY IN TIME FOR READ COMMAND', nil);
|
||||
end;
|
||||
|
||||
for i:=0 to count-1 do begin
|
||||
@@ -217,7 +217,7 @@ begin
|
||||
|
||||
if not ready then begin
|
||||
console.writestringln('Device not ready in time!');
|
||||
BSOD('Device not ready in time!', 'ATA DEVICE NOT READY IN TIME FOR WRITE COMMAND');
|
||||
core.panic.panic('ATA', 'ATA DEVICE NOT READY IN TIME FOR WRITE COMMAND', nil);
|
||||
end;
|
||||
|
||||
for i:=0 to count-1 do begin
|
||||
@@ -234,7 +234,7 @@ begin
|
||||
|
||||
if not ready then begin
|
||||
console.writestringln('Device not ready in time!');
|
||||
BSOD('Device not ready in time!', 'ATA DEVICE NOT READY IN TIME FOR WRITE');
|
||||
core.panic.panic('ATA', 'ATA DEVICE NOT READY IN TIME FOR WRITE', nil);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
Reference in new issue
Block a user