diff options
Diffstat (limited to 'i386/include')
-rw-r--r-- | i386/include/mach/i386/asm.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/i386/include/mach/i386/asm.h b/i386/include/mach/i386/asm.h index 45b848df..8ceae8ca 100644 --- a/i386/include/mach/i386/asm.h +++ b/i386/include/mach/i386/asm.h @@ -27,6 +27,7 @@ #ifndef _MACH_I386_ASM_H_ #define _MACH_I386_ASM_H_ +#ifdef __i386__ #define S_ARG0 4(%esp) #define S_ARG1 8(%esp) #define S_ARG2 12(%esp) @@ -39,6 +40,32 @@ #define B_ARG1 12(%ebp) #define B_ARG2 16(%ebp) #define B_ARG3 20(%ebp) +#endif + +#ifdef __x86_64__ +#define S_ARG0 %rdi +#define S_ARG1 %rsi +#define S_ARG2 %rdx +#define S_ARG3 %rcx +#define S_ARG4 %r8 +#define S_ARG5 %r9 + +#define FRAME pushq %rbp; movq %rsp, %rbp +#define EMARF leave + +#define B_ARG0 S_ARG0 +#define B_ARG1 S_ARG1 +#define B_ARG2 S_ARG2 +#define B_ARG3 S_ARG3 + +#ifdef MACH_XEN +#define INT_FIX \ + popq %rcx ;\ + popq %r11 +#else +#define INT_FIX +#endif +#endif #ifdef i486 #define TEXT_ALIGN 4 |