diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-05-15 12:49:42 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-05-15 12:49:42 -0700 |
commit | 3b550e9e48628300210892c64f1b9c2d940393d5 (patch) | |
tree | 75fce4f10b48057c64601207a12b71f857e4381f | |
parent | dde05f0093424253cea3f7bc19a3c14dee2e65d7 (diff) | |
download | glibc-3b550e9e48628300210892c64f1b9c2d940393d5.tar glibc-3b550e9e48628300210892c64f1b9c2d940393d5.tar.gz glibc-3b550e9e48628300210892c64f1b9c2d940393d5.tar.bz2 glibc-3b550e9e48628300210892c64f1b9c2d940393d5.zip |
Add sysdeps/x86_64/x32/sysdep.h
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/x86_64/sysdep.h | 5 | ||||
-rw-r--r-- | sysdeps/x86_64/x32/sysdep.h | 92 |
3 files changed, 102 insertions, 0 deletions
@@ -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__ */ |