aboutsummaryrefslogtreecommitdiff
path: root/mirai/asm/interrupts/stubs.zig
diff options
context:
space:
mode:
Diffstat (limited to 'mirai/asm/interrupts/stubs.zig')
-rw-r--r--mirai/asm/interrupts/stubs.zig42
1 files changed, 42 insertions, 0 deletions
diff --git a/mirai/asm/interrupts/stubs.zig b/mirai/asm/interrupts/stubs.zig
new file mode 100644
index 0000000..65b3cd8
--- /dev/null
+++ b/mirai/asm/interrupts/stubs.zig
@@ -0,0 +1,42 @@
+//! Interrupt Handler Stub Assembly
+
+pub const push_all =
+ \\push %%rax
+ \\push %%rbx
+ \\push %%rcx
+ \\push %%rdx
+ \\push %%rsi
+ \\push %%rdi
+ \\push %%rbp
+ \\push %%r8
+ \\push %%r9
+ \\push %%r10
+ \\push %%r11
+ \\push %%r12
+ \\push %%r13
+ \\push %%r14
+ \\push %%r15
+;
+
+pub const pop_all =
+ \\pop %%r15
+ \\pop %%r14
+ \\pop %%r13
+ \\pop %%r12
+ \\pop %%r11
+ \\pop %%r10
+ \\pop %%r9
+ \\pop %%r8
+ \\pop %%rbp
+ \\pop %%rdi
+ \\pop %%rsi
+ \\pop %%rdx
+ \\pop %%rcx
+ \\pop %%rbx
+ \\pop %%rax
+;
+
+pub const iret_cleanup =
+ \\add $16, %%rsp
+ \\iretq
+;