summaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksa@vuckovic.cc>2023-02-26 07:29:26 +0100
committerAleksa Vuckovic <aleksa@vuckovic.cc>2023-02-26 07:39:55 +0100
commita362a43899040a3848427c4d1f3bd1d3e53f46ec (patch)
tree3255f10f358ab2dba1555a45a91950d185d397f7 /kernel/include
parent40eecaecc552945f72a2b90f4122bf929960671c (diff)
passing rsp from isr_stub, fixing panic()
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/irq_handler.h3
-rw-r--r--kernel/include/paging.h2
-rw-r--r--kernel/include/panic.h2
-rw-r--r--kernel/include/regs.h27
-rw-r--r--kernel/include/timer.h2
5 files changed, 31 insertions, 5 deletions
diff --git a/kernel/include/irq_handler.h b/kernel/include/irq_handler.h
index 571d1ab..01f4950 100644
--- a/kernel/include/irq_handler.h
+++ b/kernel/include/irq_handler.h
@@ -3,8 +3,7 @@
#include <types.h>
-void isr_def_handler(uint64_t number, uint64_t error);
void eoi(uint64_t number);
-void irq_def_handler(uint64_t number);
+void isr_def_handler(uint64_t number, uint64_t rsp, uint64_t error);
#endif
diff --git a/kernel/include/paging.h b/kernel/include/paging.h
index 4aaf6af..65c9652 100644
--- a/kernel/include/paging.h
+++ b/kernel/include/paging.h
@@ -12,7 +12,7 @@
void load_pt_lvl4(uint64_t *);
void init_paging(void);
void map_addr(uint64_t virt, uint64_t phys, uint32_t flags);
-void page_fault(uint64_t error);
+void page_fault(uint64_t rsp, uint64_t error);
extern uint64_t __attribute__((aligned(4096))) page_table_lvl4[512];
extern uint64_t __attribute__((aligned(4096))) page_table_lvl3[512];
diff --git a/kernel/include/panic.h b/kernel/include/panic.h
index 4949c77..9fb3f4f 100644
--- a/kernel/include/panic.h
+++ b/kernel/include/panic.h
@@ -5,6 +5,6 @@
extern uint64_t panic_rsp;
-__attribute__((noreturn)) void panic(const char *error, ...);
+__attribute__((noreturn)) void panic(uint64_t rsp, const char *s, ...);
#endif
diff --git a/kernel/include/regs.h b/kernel/include/regs.h
new file mode 100644
index 0000000..81b8a69
--- /dev/null
+++ b/kernel/include/regs.h
@@ -0,0 +1,27 @@
+#ifndef REGS_H
+#define REGS_H
+
+#define R15_OFF 0x0
+#define R14_OFF 0x08
+#define R13_OFF 0x10
+#define R12_OFF 0x18
+#define RBP_OFF 0x20
+#define RBX_OFF 0x28
+#define SEG_OFF 0x30
+#define R11_OFF 0x38
+#define R10_OFF 0x40
+#define R9_OFF 0x48
+#define R8_OFF 0x50
+#define RDI_OFF 0x58
+#define RSI_OFF 0x60
+#define RDX_OFF 0x68
+#define RCX_OFF 0x70
+#define RAX_OFF 0x78
+#define ERROR_OFF 0x80
+#define RIP_OFF 0x88
+#define CS_OFF 0x90
+#define RFLAGS_OFF 0x98
+#define RSP_OFF 0x100
+#define SS_OFF 0x108
+
+#endif
diff --git a/kernel/include/timer.h b/kernel/include/timer.h
index 3ddef4d..899f09f 100644
--- a/kernel/include/timer.h
+++ b/kernel/include/timer.h
@@ -5,7 +5,7 @@
#define TICKS_PER_SECOND 1000
-void timer_handler(void);
+void timer_handler(uint64_t rsp);
void wait(uint64_t ms);
void init_timer(uint32_t frequency);