summaryrefslogtreecommitdiff
path: root/sys/include/arch
diff options
context:
space:
mode:
Diffstat (limited to 'sys/include/arch')
-rw-r--r--sys/include/arch/amd64/frameasm.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/sys/include/arch/amd64/frameasm.h b/sys/include/arch/amd64/frameasm.h
index b6d4f39..b8791ba 100644
--- a/sys/include/arch/amd64/frameasm.h
+++ b/sys/include/arch/amd64/frameasm.h
@@ -100,4 +100,28 @@
pop_trapframe_ec
add $8, %rsp /* Pop error code */
.endm
+
+/*
+ * Generic interrupt entry.
+ */
+#define INTRENTRY(ENTLABEL, HANDLER) \
+ ENTLABEL: \
+ push_trapframe $0 ; \
+ mov %rsp, %rdi ; \
+ call HANDLER ; \
+ pop_trapframe ; \
+ iretq
+
+/*
+ * Trap entry where an error code is on
+ * the stack.
+ */
+#define TRAPENTRY(ENTLABEL, TRAPNO) \
+ ENTLABEL: \
+ push_trapframe_ec TRAPNO ; \
+ mov %rsp, %rdi ; \
+ call trap_handler ; \
+ pop_trapframe_ec ; \
+ iretq
+
#endif /* !_MACHINE_FRAMEASM_H_ */