Loading arch/powerpc/include/asm/setup.h +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ extern void ppc_printk_progress(char *s, unsigned short hex); extern unsigned int rtas_data; extern unsigned long long memory_limit; extern bool init_mem_is_free; extern unsigned long klimit; extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask); Loading arch/powerpc/kernel/exceptions-64s.S +2 −2 Original line number Diff line number Diff line Loading @@ -1344,9 +1344,7 @@ EXC_REAL_BEGIN(denorm_exception_hv, 0x1500, 0x100) #ifdef CONFIG_PPC_DENORMALISATION mfspr r10,SPRN_HSRR1 mfspr r11,SPRN_HSRR0 /* save HSRR0 */ andis. r10,r10,(HSRR1_DENORM)@h /* denorm? */ addi r11,r11,-4 /* HSRR0 is next instruction */ bne+ denorm_assist #endif Loading Loading @@ -1412,6 +1410,8 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S) */ XVCPSGNDP32(32) denorm_done: mfspr r11,SPRN_HSRR0 subi r11,r11,4 mtspr SPRN_HSRR0,r11 mtcrf 0x80,r9 ld r9,PACA_EXGEN+EX_R9(r13) Loading arch/powerpc/kernel/process.c +10 −0 Original line number Diff line number Diff line Loading @@ -1303,6 +1303,16 @@ void show_user_instructions(struct pt_regs *regs) pc = regs->nip - (instructions_to_print * 3 / 4 * sizeof(int)); /* * Make sure the NIP points at userspace, not kernel text/data or * elsewhere. */ if (!__access_ok(pc, instructions_to_print * sizeof(int), USER_DS)) { pr_info("%s[%d]: Bad NIP, not dumping instructions.\n", current->comm, current->pid); return; } pr_info("%s[%d]: code: ", current->comm, current->pid); for (i = 0; i < instructions_to_print; i++) { Loading arch/powerpc/kernel/tm.S +16 −2 Original line number Diff line number Diff line Loading @@ -180,6 +180,20 @@ _GLOBAL(tm_reclaim) std r11, GPR11(r1) /* Temporary stash */ /* * Move the saved user r1 to the kernel stack in case PACATMSCRATCH is * clobbered by an exception once we turn on MSR_RI below. */ ld r11, PACATMSCRATCH(r13) std r11, GPR1(r1) /* * Store r13 away so we can free up the scratch SPR for the SLB fault * handler (needed once we start accessing the thread_struct). */ GET_SCRATCH0(r11) std r11, GPR13(r1) /* Reset MSR RI so we can take SLB faults again */ li r11, MSR_RI mtmsrd r11, 1 Loading Loading @@ -210,11 +224,11 @@ _GLOBAL(tm_reclaim) SAVE_GPR(8, r7) /* user r8 */ SAVE_GPR(9, r7) /* user r9 */ SAVE_GPR(10, r7) /* user r10 */ ld r3, PACATMSCRATCH(r13) /* user r1 */ ld r3, GPR1(r1) /* user r1 */ ld r4, GPR7(r1) /* user r7 */ ld r5, GPR11(r1) /* user r11 */ ld r6, GPR12(r1) /* user r12 */ GET_SCRATCH0(8) /* user r13 */ ld r8, GPR13(r1) /* user r13 */ std r3, GPR1(r7) std r4, GPR7(r7) std r5, GPR11(r7) Loading arch/powerpc/lib/checksum_64.S +3 −0 Original line number Diff line number Diff line Loading @@ -443,6 +443,9 @@ _GLOBAL(csum_ipv6_magic) addc r0, r8, r9 ld r10, 0(r4) ld r11, 8(r4) #ifdef CONFIG_CPU_LITTLE_ENDIAN rotldi r5, r5, 8 #endif adde r0, r0, r10 add r5, r5, r7 adde r0, r0, r11 Loading Loading
arch/powerpc/include/asm/setup.h +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ extern void ppc_printk_progress(char *s, unsigned short hex); extern unsigned int rtas_data; extern unsigned long long memory_limit; extern bool init_mem_is_free; extern unsigned long klimit; extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask); Loading
arch/powerpc/kernel/exceptions-64s.S +2 −2 Original line number Diff line number Diff line Loading @@ -1344,9 +1344,7 @@ EXC_REAL_BEGIN(denorm_exception_hv, 0x1500, 0x100) #ifdef CONFIG_PPC_DENORMALISATION mfspr r10,SPRN_HSRR1 mfspr r11,SPRN_HSRR0 /* save HSRR0 */ andis. r10,r10,(HSRR1_DENORM)@h /* denorm? */ addi r11,r11,-4 /* HSRR0 is next instruction */ bne+ denorm_assist #endif Loading Loading @@ -1412,6 +1410,8 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S) */ XVCPSGNDP32(32) denorm_done: mfspr r11,SPRN_HSRR0 subi r11,r11,4 mtspr SPRN_HSRR0,r11 mtcrf 0x80,r9 ld r9,PACA_EXGEN+EX_R9(r13) Loading
arch/powerpc/kernel/process.c +10 −0 Original line number Diff line number Diff line Loading @@ -1303,6 +1303,16 @@ void show_user_instructions(struct pt_regs *regs) pc = regs->nip - (instructions_to_print * 3 / 4 * sizeof(int)); /* * Make sure the NIP points at userspace, not kernel text/data or * elsewhere. */ if (!__access_ok(pc, instructions_to_print * sizeof(int), USER_DS)) { pr_info("%s[%d]: Bad NIP, not dumping instructions.\n", current->comm, current->pid); return; } pr_info("%s[%d]: code: ", current->comm, current->pid); for (i = 0; i < instructions_to_print; i++) { Loading
arch/powerpc/kernel/tm.S +16 −2 Original line number Diff line number Diff line Loading @@ -180,6 +180,20 @@ _GLOBAL(tm_reclaim) std r11, GPR11(r1) /* Temporary stash */ /* * Move the saved user r1 to the kernel stack in case PACATMSCRATCH is * clobbered by an exception once we turn on MSR_RI below. */ ld r11, PACATMSCRATCH(r13) std r11, GPR1(r1) /* * Store r13 away so we can free up the scratch SPR for the SLB fault * handler (needed once we start accessing the thread_struct). */ GET_SCRATCH0(r11) std r11, GPR13(r1) /* Reset MSR RI so we can take SLB faults again */ li r11, MSR_RI mtmsrd r11, 1 Loading Loading @@ -210,11 +224,11 @@ _GLOBAL(tm_reclaim) SAVE_GPR(8, r7) /* user r8 */ SAVE_GPR(9, r7) /* user r9 */ SAVE_GPR(10, r7) /* user r10 */ ld r3, PACATMSCRATCH(r13) /* user r1 */ ld r3, GPR1(r1) /* user r1 */ ld r4, GPR7(r1) /* user r7 */ ld r5, GPR11(r1) /* user r11 */ ld r6, GPR12(r1) /* user r12 */ GET_SCRATCH0(8) /* user r13 */ ld r8, GPR13(r1) /* user r13 */ std r3, GPR1(r7) std r4, GPR7(r7) std r5, GPR11(r7) Loading
arch/powerpc/lib/checksum_64.S +3 −0 Original line number Diff line number Diff line Loading @@ -443,6 +443,9 @@ _GLOBAL(csum_ipv6_magic) addc r0, r8, r9 ld r10, 0(r4) ld r11, 8(r4) #ifdef CONFIG_CPU_LITTLE_ENDIAN rotldi r5, r5, 8 #endif adde r0, r0, r10 add r5, r5, r7 adde r0, r0, r11 Loading