ia64/xen-unstable
changeset 11859:025e19453f1a
Define REX64_PREFIX to account for assembler syntax differences on SVR4 targets.
Signed-off-by: John Levon <john.levon@sun.com>
Signed-off-by: John Levon <john.levon@sun.com>
author | kfraser@localhost.localdomain |
---|---|
date | Tue Oct 17 18:50:08 2006 +0100 (2006-10-17) |
parents | c4cc70c32077 |
children | a682d1be3f95 |
files | xen/arch/x86/i387.c xen/include/asm-x86/x86_64/asm_defns.h |
line diff
1.1 --- a/xen/arch/x86/i387.c Tue Oct 17 18:45:18 2006 +0100 1.2 +++ b/xen/arch/x86/i387.c Tue Oct 17 18:50:08 2006 +0100 1.3 @@ -14,6 +14,7 @@ 1.4 #include <asm/processor.h> 1.5 #include <asm/hvm/support.h> 1.6 #include <asm/i387.h> 1.7 +#include <asm/asm_defns.h> 1.8 1.9 void init_fpu(void) 1.10 { 1.11 @@ -41,11 +42,11 @@ void save_init_fpu(struct vcpu *v) 1.12 #else /* __x86_64__ */ 1.13 /* 1.14 * The only way to force fxsaveq on a wide range of gas versions. On 1.15 - * older versions the rex64 prefix works only if we force an addressing 1.16 - * mode that doesn't require extended registers. 1.17 + * older versions the rex64 prefix works only if we force an 1.18 + * addressing mode that doesn't require extended registers. 1.19 */ 1.20 __asm__ __volatile__ ( 1.21 - "rex64/fxsave (%1)" 1.22 + REX64_PREFIX "fxsave (%1)" 1.23 : "=m" (*fpu_ctxt) : "cdaSDb" (fpu_ctxt) ); 1.24 #endif 1.25 1.26 @@ -95,7 +96,7 @@ void restore_fpu(struct vcpu *v) 1.27 "1: fxrstor %0 \n" 1.28 #else /* __x86_64__ */ 1.29 /* See above for why the operands/constraints are this way. */ 1.30 - "1: rex64/fxrstor (%2) \n" 1.31 + "1: " REX64_PREFIX "fxrstor (%2)\n" 1.32 #endif 1.33 ".section .fixup,\"ax\" \n" 1.34 "2: push %%"__OP"ax \n"
2.1 --- a/xen/include/asm-x86/x86_64/asm_defns.h Tue Oct 17 18:45:18 2006 +0100 2.2 +++ b/xen/include/asm-x86/x86_64/asm_defns.h Tue Oct 17 18:50:08 2006 +0100 2.3 @@ -60,6 +60,12 @@ 2.4 #define safe_swapgs \ 2.5 "mfence; swapgs;" 2.6 2.7 +#ifdef __sun__ 2.8 +#define REX64_PREFIX "rex64\\" 2.9 +#else 2.10 +#define REX64_PREFIX "rex64/" 2.11 +#endif 2.12 + 2.13 #define BUILD_SMP_INTERRUPT(x,v) XBUILD_SMP_INTERRUPT(x,v) 2.14 #define XBUILD_SMP_INTERRUPT(x,v) \ 2.15 asmlinkage void x(void); \