aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2012-05-15 12:49:42 -0700
committerH.J. Lu <hjl.tools@gmail.com>2012-05-15 12:49:42 -0700
commit3b550e9e48628300210892c64f1b9c2d940393d5 (patch)
tree75fce4f10b48057c64601207a12b71f857e4381f
parentdde05f0093424253cea3f7bc19a3c14dee2e65d7 (diff)
downloadglibc-3b550e9e48628300210892c64f1b9c2d940393d5.tar
glibc-3b550e9e48628300210892c64f1b9c2d940393d5.tar.gz
glibc-3b550e9e48628300210892c64f1b9c2d940393d5.tar.bz2
glibc-3b550e9e48628300210892c64f1b9c2d940393d5.zip
Add sysdeps/x86_64/x32/sysdep.h
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/x86_64/sysdep.h5
-rw-r--r--sysdeps/x86_64/x32/sysdep.h92
3 files changed, 102 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 30b4d87682..512e5cd7e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2012-05-15 H.J. Lu <hongjiu.lu@intel.com>
+ * sysdeps/x86_64/sysdep.h: Allowed to be include more than once.
+ * sysdeps/x86_64/x32/sysdep.h: New file.
+
+2012-05-15 H.J. Lu <hongjiu.lu@intel.com>
+
* sysdeps/x86_64/__longjmp.S: Use R*_LP on SP and PC.
* sysdeps/x86_64/setjmp.S: Likewise.
diff --git a/sysdeps/x86_64/sysdep.h b/sysdeps/x86_64/sysdep.h
index e34d7a9444..af69499759 100644
--- a/sysdeps/x86_64/sysdep.h
+++ b/sysdeps/x86_64/sysdep.h
@@ -16,6 +16,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _X86_64_SYSDEP_H
+#define _X86_64_SYSDEP_H 1
+
#include <sysdeps/generic/sysdep.h>
#ifdef __ASSEMBLER__
@@ -152,3 +155,5 @@ lose: \
#define R15_LP "r15"
#endif /* __ASSEMBLER__ */
+
+#endif /* _X86_64_SYSDEP_H */
diff --git a/sysdeps/x86_64/x32/sysdep.h b/sysdeps/x86_64/x32/sysdep.h
new file mode 100644
index 0000000000..cbe2e5f41a
--- /dev/null
+++ b/sysdeps/x86_64/x32/sysdep.h
@@ -0,0 +1,92 @@
+/* Assembler macros for x32.
+ Copyright (C) 2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdeps/x86_64/sysdep.h>
+
+#undef LP_SIZE
+#undef LP_OP
+#undef ASM_ADDR
+
+#undef RAX_LP
+#undef RBP_LP
+#undef RBX_LP
+#undef RCX_LP
+#undef RDI_LP
+#undef RDX_LP
+#undef RSP_LP
+#undef RSI_LP
+#undef R8_LP
+#undef R9_LP
+#undef R10_LP
+#undef R11_LP
+#undef R12_LP
+#undef R13_LP
+#undef R14_LP
+#undef R15_LP
+
+#ifdef __ASSEMBLER__
+
+# define LP_SIZE 4
+
+# define LP_OP(insn) insn##l
+
+# define ASM_ADDR .long
+
+# define RAX_LP eax
+# define RBP_LP ebp
+# define RBX_LP ebx
+# define RCX_LP ecx
+# define RDI_LP edi
+# define RDX_LP edx
+# define RSI_LP esi
+# define RSP_LP esp
+# define R8_LP r8d
+# define R9_LP r9d
+# define R10_LP r10d
+# define R11_LP r11d
+# define R12_LP r12d
+# define R13_LP r13d
+# define R14_LP r14d
+# define R15_LP r15d
+
+#else /* __ASSEMBLER__ */
+
+# define LP_SIZE "4"
+
+# define LP_OP(insn) #insn "l"
+
+# define ASM_ADDR ".long"
+
+# define RAX_LP "eax"
+# define RBP_LP "ebp"
+# define RBX_LP "ebx"
+# define RCX_LP "ecx"
+# define RDI_LP "edi"
+# define RDX_LP "edx"
+# define RSI_LP "esi"
+# define RSP_LP "esp"
+# define R8_LP "r8d"
+# define R9_LP "r9d"
+# define R10_LP "r10d"
+# define R11_LP "r11d"
+# define R12_LP "r12d"
+# define R13_LP "r13d"
+# define R14_LP "r14d"
+# define R15_LP "r15d"
+
+#endif /* __ASSEMBLER__ */