/* $NetBSD: frameasm.h,v 1.1 2001/06/19 00:20:10 fvdl Exp $ */ #ifndef _X86_64_MACHINE_FRAMEASM_H #define _X86_64_MACHINE_FRAMEASM_H /* * Macros to define pushing/popping frames for interrupts, traps * and system calls. Currently all the same; will diverge later. */ /* * These are used on interrupt or trap entry or exit. */ #define INTRENTRY \ pushq %rax ; \ pushq %rcx ; \ pushq %rdx ; \ pushq %rbx ; \ pushq %rbp ; \ pushq %rsi ; \ pushq %rdi ; \ pushq %r8 ; \ pushq %r9 ; \ pushq %r10 ; \ pushq %r11 ; \ pushq %r12 ; \ pushq %r13 ; \ pushq %r14 ; \ pushq %r15 #define INTR_RESTOREARGS \ popq %r15 ; \ popq %r14 ; \ popq %r13 ; \ popq %r12 ; \ popq %r11 ; \ popq %r10 ; \ popq %r9 ; \ popq %r8 ; \ popq %rdi ; \ popq %rsi ; \ popq %rbp ; \ popq %rbx ; \ popq %rdx ; \ popq %rcx ; \ popq %rax #define INTRFASTEXIT \ INTR_RESTOREARGS ; \ addq $16,%rsp ; \ iretq #endif /* _X86_64_MACHINE_FRAMEASM_H */