diff options
Diffstat (limited to 'src/aplos.h')
-rw-r--r-- | src/aplos.h | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/src/aplos.h b/src/aplos.h index 7d3fce0..ad9109b 100644 --- a/src/aplos.h +++ b/src/aplos.h @@ -29,6 +29,40 @@ struct boot_info uint64_t physbase; }; +struct cpu_regs +{ + /* Keep this in sync with dump_regs in nasty.S */ + uint64_t rax; + uint64_t rbx; + uint64_t rcx; + uint64_t rdx; + uint64_t rsi; + uint64_t rdi; + uint64_t rsp; + uint64_t rbp; + uint64_t r8; + uint64_t r9; + uint64_t r10; + uint64_t r11; + uint64_t r12; + uint64_t r13; + uint64_t r14; + uint64_t r15; + uint64_t rip; + uint64_t rflags; + uint64_t cr0; + uint64_t cr2; + uint64_t cr3; + uint64_t cr4; + uint64_t cr8; + uint16_t cs; + uint16_t ds; + uint16_t ss; + uint16_t es; + uint16_t fs; + uint16_t gs; +}; + /* boot.c */ uint64_t cpu_count(void); @@ -47,7 +81,7 @@ void main(struct boot_info *); /* nasty.S */ struct table_reg; -void halt(void); +[[noreturn]] void halt(void); void disable_interrupts(void); void enable_interrupts(void); void set_gdt(struct table_reg *, uint64_t, uint64_t, uint64_t); @@ -55,13 +89,14 @@ void set_idt(struct table_reg *); uint64_t get_cr2(void); uint64_t get_cr3(void); extern void (*isr_stubs[32])(void); +void dump_regs(struct cpu_regs *); /* paging.c */ void setup_paging(struct boot_info *); bool page_fault_handler(uint32_t); /* panic.c */ -void panic(void); +[[noreturn]] void panic(void); /* screen.c */ void screen_init(struct framebuffer *); |