diff options
Diffstat (limited to 'sys/include/arch')
-rw-r--r-- | sys/include/arch/amd64/frameasm.h | 24 |
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_ */ |