summaryrefslogtreecommitdiff
path: root/i386/include/mach/i386/asm.h
diff options
context:
space:
mode:
Diffstat (limited to 'i386/include/mach/i386/asm.h')
-rw-r--r--i386/include/mach/i386/asm.h27
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