diff options
Diffstat (limited to 'arch/powerpc/kernel/vdso64')
| -rw-r--r-- | arch/powerpc/kernel/vdso64/getcpu.S | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/vdso64/sigtramp.S | 16 | ||||
| -rw-r--r-- | arch/powerpc/kernel/vdso64/vdso64.lds.S | 4 | ||||
| -rw-r--r-- | arch/powerpc/kernel/vdso64/vdso64_wrapper.S | 3 | 
4 files changed, 21 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/vdso64/getcpu.S b/arch/powerpc/kernel/vdso64/getcpu.S index 47afd08c90f..23eb9a9441b 100644 --- a/arch/powerpc/kernel/vdso64/getcpu.S +++ b/arch/powerpc/kernel/vdso64/getcpu.S @@ -29,7 +29,7 @@   */  V_FUNCTION_BEGIN(__kernel_getcpu)    .cfi_startproc -	mfspr	r5,SPRN_USPRG3 +	mfspr	r5,SPRN_SPRG_VDSO_READ  	cmpdi	cr0,r3,0  	cmpdi	cr1,r4,0  	clrlwi  r6,r5,16 diff --git a/arch/powerpc/kernel/vdso64/sigtramp.S b/arch/powerpc/kernel/vdso64/sigtramp.S index 45ea281e9a2..542c6f422e4 100644 --- a/arch/powerpc/kernel/vdso64/sigtramp.S +++ b/arch/powerpc/kernel/vdso64/sigtramp.S @@ -142,6 +142,13 @@ V_FUNCTION_END(__kernel_sigtramp_rt64)  /* Size of CR reg in DWARF unwind info. */  #define CRSIZE	4 +/* Offset of CR reg within a full word. */ +#ifdef __LITTLE_ENDIAN__ +#define CROFF 0 +#else +#define CROFF (RSIZE - CRSIZE) +#endif +  /* This is the offset of the VMX reg pointer.  */  #define VREGS	48*RSIZE+33*8 @@ -181,7 +188,14 @@ V_FUNCTION_END(__kernel_sigtramp_rt64)    rsave (31, 31*RSIZE);							\    rsave (67, 32*RSIZE);		/* ap, used as temp for nip */		\    rsave (65, 36*RSIZE);		/* lr */				\ -  rsave (70, 38*RSIZE + (RSIZE - CRSIZE)) /* cr */ +  rsave (68, 38*RSIZE + CROFF);	/* cr fields */				\ +  rsave (69, 38*RSIZE + CROFF);						\ +  rsave (70, 38*RSIZE + CROFF);						\ +  rsave (71, 38*RSIZE + CROFF);						\ +  rsave (72, 38*RSIZE + CROFF);						\ +  rsave (73, 38*RSIZE + CROFF);						\ +  rsave (74, 38*RSIZE + CROFF);						\ +  rsave (75, 38*RSIZE + CROFF)  /* Describe where the FP regs are saved.  */  #define EH_FRAME_FP \ diff --git a/arch/powerpc/kernel/vdso64/vdso64.lds.S b/arch/powerpc/kernel/vdso64/vdso64.lds.S index e4863819663..64fb183a47c 100644 --- a/arch/powerpc/kernel/vdso64/vdso64.lds.S +++ b/arch/powerpc/kernel/vdso64/vdso64.lds.S @@ -4,7 +4,11 @@   */  #include <asm/vdso.h> +#ifdef __LITTLE_ENDIAN__ +OUTPUT_FORMAT("elf64-powerpcle", "elf64-powerpcle", "elf64-powerpcle") +#else  OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", "elf64-powerpc") +#endif  OUTPUT_ARCH(powerpc:common64)  ENTRY(_start) diff --git a/arch/powerpc/kernel/vdso64/vdso64_wrapper.S b/arch/powerpc/kernel/vdso64/vdso64_wrapper.S index b8553d62b79..df60fca6a13 100644 --- a/arch/powerpc/kernel/vdso64/vdso64_wrapper.S +++ b/arch/powerpc/kernel/vdso64/vdso64_wrapper.S @@ -1,4 +1,3 @@ -#include <linux/init.h>  #include <linux/linkage.h>  #include <asm/page.h> @@ -7,7 +6,7 @@  	.globl vdso64_start, vdso64_end  	.balign PAGE_SIZE  vdso64_start: -	.incbin "arch/powerpc/kernel/vdso64/vdso64.so" +	.incbin "arch/powerpc/kernel/vdso64/vdso64.so.dbg"  	.balign PAGE_SIZE  vdso64_end:  | 
