summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2012-03-10 13:46:33 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-03-28 16:31:41 +0100
commitdd9e5cf1a51c7333d561fc694b68a756edf32b0f (patch)
tree127bf7ea55c2a4706c01ca09755ffbf550027bbb
parent9e7436251ccfd563d4fcfdd96ab48e9c0759307f (diff)
asm.h: Add 64bit variant
* i386/include/mach/i386/asm.h (S_ARG0, S_ARG1, S_ARG2, S_ARG3, S_ARG4, S_ARG5, FRAME, EMARF, B_ARG0, B_ARG1, B_ARG2, B_ARG3, INT_FIX): Add 64bit variants.
-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