Compare commits
3 Commits
2fa4193517
...
2eec448653
Author | SHA1 | Date | |
---|---|---|---|
2eec448653 | |||
9932b92963 | |||
5d8343ed40 |
@ -10,6 +10,7 @@ import hulk.console;
|
|||||||
import hulk.klog;
|
import hulk.klog;
|
||||||
import hulk.apic;
|
import hulk.apic;
|
||||||
import hulk.cpu;
|
import hulk.cpu;
|
||||||
|
import hulk.kfont;
|
||||||
|
|
||||||
struct Idt
|
struct Idt
|
||||||
{
|
{
|
||||||
@ -83,19 +84,34 @@ struct Idt
|
|||||||
movabs $$1f, %rax
|
movabs $$1f, %rax
|
||||||
jmp 2f
|
jmp 2f
|
||||||
1:
|
1:
|
||||||
pushq %rdi
|
|
||||||
pushq %rsi
|
|
||||||
pushq %rax
|
pushq %rax
|
||||||
|
pushq %rcx
|
||||||
pushq %rdx
|
pushq %rdx
|
||||||
|
pushq %rsi
|
||||||
|
pushq %rdi
|
||||||
|
pushq %r8
|
||||||
|
pushq %r9
|
||||||
|
pushq %r10
|
||||||
|
pushq %r11
|
||||||
|
pushq %rbp
|
||||||
|
mov %rsp, %rbp
|
||||||
|
and $$0xFFFFFFFFFFFFFFF0, %rsp
|
||||||
mov $$", isr, ", %rdi
|
mov $$", isr, ", %rdi
|
||||||
" ~ (isr_has_error_code(isr) ? "mov 0x20(%rsp), %rsi" : "") ~ "
|
" ~ (isr_has_error_code(isr) ? "mov 0x50(%rbp), %rsi" : "") ~ "
|
||||||
" ~ (isr_has_error_code(isr) ? "lea 0x28(%rsp), %rdx" : "lea 0x20(%rsp), %rdx") ~ "
|
" ~ (isr_has_error_code(isr) ? "lea 0x58(%rbp), %rdx" : "lea 0x50(%rbp), %rdx") ~ "
|
||||||
movabs $$isr, %rax
|
movabs $$isr, %rax
|
||||||
callq *%rax
|
callq *%rax
|
||||||
popq %rdx
|
mov %rbp, %rsp
|
||||||
popq %rax
|
popq %rbp
|
||||||
popq %rsi
|
popq %r11
|
||||||
|
popq %r10
|
||||||
|
popq %r9
|
||||||
|
popq %r8
|
||||||
popq %rdi
|
popq %rdi
|
||||||
|
popq %rsi
|
||||||
|
popq %rdx
|
||||||
|
popq %rcx
|
||||||
|
popq %rax
|
||||||
" ~ (isr_has_error_code(isr) ? "add $$8, %rsp" : "") ~ "
|
" ~ (isr_has_error_code(isr) ? "add $$8, %rsp" : "") ~ "
|
||||||
iretq
|
iretq
|
||||||
2:`, `={rax}`);");
|
2:`, `={rax}`);");
|
||||||
@ -136,7 +152,7 @@ public extern(C) void isr(ulong vector, ulong arg, Idt.ExceptionStackFrame * sta
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
Console.clear();
|
Console.clear();
|
||||||
Fb.clear(0xFF8000u);
|
Fb.rect(0, 0, Fb.width, Kfont.line_height, 0xCC0000u);
|
||||||
Klog.writefln("ISR %u, error code 0x%x", vector, arg);
|
Klog.writefln("ISR %u, error code 0x%x", vector, arg);
|
||||||
Klog.writefln("RIP = 0x%p", stack_frame.rip);
|
Klog.writefln("RIP = 0x%p", stack_frame.rip);
|
||||||
Klog.writefln("CS = 0x%x", stack_frame.cs);
|
Klog.writefln("CS = 0x%x", stack_frame.cs);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
project_name "x86_64-elf-gcc"
|
project_name "x86_64-elf-gcc"
|
||||||
binutils_version = "2.35"
|
binutils_version = "2.41"
|
||||||
binutils_checksum = "1b11659fb49e20e18db460d44485f09442c8c56d5df165de9461eb09c8302f85"
|
binutils_checksum = "ae9a5789e23459e59606e6714723f2d3ffc31c03174191ef0d015bdf06007450"
|
||||||
gcc_version = "10.2.0"
|
gcc_version = "13.2.0"
|
||||||
gcc_checksum = "b8dd4368bb9c7f0b98188317ee0254dd8cc99d1e3a18d0ff146c855fe16c1d8c"
|
gcc_checksum = "e275e76442a6067341a27f04c5c6b83d8613144004c0413528863dc6b5c743da"
|
||||||
install_path = File.expand_path("x86_64-elf-gcc")
|
install_path = File.expand_path("x86_64-elf-gcc")
|
||||||
target = "x86_64-elf"
|
target = "x86_64-elf"
|
||||||
path_prepend "#{install_path}/bin"
|
path_prepend "#{install_path}/bin"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user