summaryrefslogtreecommitdiff
path: root/src/aplos.h
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2025-07-29 21:40:45 +0200
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2025-07-29 21:40:45 +0200
commit0a817a5a74c328229f8a732fc3ec22d8fd7dc20d (patch)
treea5f906687a28420a2ccb29c788e6779f221e7a75 /src/aplos.h
parentca84afb315e813f08d725082320d40969b9f93e4 (diff)
Some work on keeping track of memory, and providing more info in panics
Diffstat (limited to 'src/aplos.h')
-rw-r--r--src/aplos.h39
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 *);