Loading arch/sparc64/kernel/entry.S +8 −9 Original line number Diff line number Diff line Loading @@ -1600,11 +1600,11 @@ sys_clone: flushw ba,pt %xcc, sparc_do_fork add %sp, PTREGS_OFF, %o2 ret_from_syscall: /* Clear SPARC_FLAG_NEWCHILD, switch_to leaves thread.flags in * %o7 for us. Check performance counter stuff too. /* Clear current_thread_info()->new_child, and * check performance counter stuff too. */ andn %o7, _TIF_NEWCHILD, %l0 stx %l0, [%g6 + TI_FLAGS] stb %g0, [%g6 + TI_NEW_CHILD] ldx [%g6 + TI_FLAGS], %l0 call schedule_tail mov %g7, %o0 andcc %l0, _TIF_PERFCTR, %g0 Loading Loading @@ -1720,12 +1720,11 @@ ret_sys_call: /* Check if force_successful_syscall_return() * was invoked. */ ldx [%curptr + TI_FLAGS], %l0 andcc %l0, _TIF_SYSCALL_SUCCESS, %g0 be,pt %icc, 1f andn %l0, _TIF_SYSCALL_SUCCESS, %l0 ldub [%curptr + TI_SYS_NOERROR], %l0 brz,pt %l0, 1f nop ba,pt %xcc, 80f stx %l0, [%curptr + TI_FLAGS] stb %g0, [%curptr + TI_SYS_NOERROR] 1: cmp %o0, -ERESTART_RESTARTBLOCK Loading arch/sparc64/kernel/irq.c +7 −13 Original line number Diff line number Diff line Loading @@ -782,8 +782,14 @@ static void distribute_irqs(void) } #endif struct sun5_timer { u64 count0; u64 limit0; u64 count1; u64 limit1; }; struct sun5_timer *prom_timers; static struct sun5_timer *prom_timers; static u64 prom_limit0, prom_limit1; static void map_prom_timers(void) Loading Loading @@ -839,18 +845,6 @@ static void kill_prom_timer(void) : "g1", "g2"); } void enable_prom_timer(void) { if (!prom_timers) return; /* Set it to whatever was there before. */ prom_timers->limit1 = prom_limit1; prom_timers->count1 = 0; prom_timers->limit0 = prom_limit0; prom_timers->count0 = 0; } void init_irqwork_curcpu(void) { register struct irq_work_struct *workp asm("o2"); Loading arch/sparc64/kernel/process.c +1 −1 Original line number Diff line number Diff line Loading @@ -621,8 +621,8 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, memcpy(child_trap_frame, (((struct sparc_stackf *)regs)-1), (TRACEREG_SZ+STACKFRAME_SZ)); t->flags = (t->flags & ~((0xffUL << TI_FLAG_CWP_SHIFT) | (0xffUL << TI_FLAG_CURRENT_DS_SHIFT))) | _TIF_NEWCHILD | (((regs->tstate + 1) & TSTATE_CWP) << TI_FLAG_CWP_SHIFT); t->new_child = 1; t->ksp = ((unsigned long) child_trap_frame) - STACK_BIAS; t->kregs = (struct pt_regs *)(child_trap_frame+sizeof(struct sparc_stackf)); t->fpsaved[0] = 0; Loading arch/sparc64/kernel/smp.c +1 −1 Original line number Diff line number Diff line Loading @@ -137,7 +137,7 @@ void __init smp_callin(void) /* Clear this or we will die instantly when we * schedule back to this idler... */ clear_thread_flag(TIF_NEWCHILD); current_thread_info()->new_child = 0; /* Attach to the address space of init_task. */ atomic_inc(&init_mm.mm_count); Loading arch/sparc64/kernel/traps.c +2 −0 Original line number Diff line number Diff line Loading @@ -2125,6 +2125,8 @@ void __init trap_init(void) TI_PCR != offsetof(struct thread_info, pcr_reg) || TI_CEE_STUFF != offsetof(struct thread_info, cee_stuff) || TI_PRE_COUNT != offsetof(struct thread_info, preempt_count) || TI_NEW_CHILD != offsetof(struct thread_info, new_child) || TI_SYS_NOERROR != offsetof(struct thread_info, syscall_noerror) || TI_FPREGS != offsetof(struct thread_info, fpregs) || (TI_FPREGS & (64 - 1))) thread_info_offsets_are_bolixed_dave(); Loading Loading
arch/sparc64/kernel/entry.S +8 −9 Original line number Diff line number Diff line Loading @@ -1600,11 +1600,11 @@ sys_clone: flushw ba,pt %xcc, sparc_do_fork add %sp, PTREGS_OFF, %o2 ret_from_syscall: /* Clear SPARC_FLAG_NEWCHILD, switch_to leaves thread.flags in * %o7 for us. Check performance counter stuff too. /* Clear current_thread_info()->new_child, and * check performance counter stuff too. */ andn %o7, _TIF_NEWCHILD, %l0 stx %l0, [%g6 + TI_FLAGS] stb %g0, [%g6 + TI_NEW_CHILD] ldx [%g6 + TI_FLAGS], %l0 call schedule_tail mov %g7, %o0 andcc %l0, _TIF_PERFCTR, %g0 Loading Loading @@ -1720,12 +1720,11 @@ ret_sys_call: /* Check if force_successful_syscall_return() * was invoked. */ ldx [%curptr + TI_FLAGS], %l0 andcc %l0, _TIF_SYSCALL_SUCCESS, %g0 be,pt %icc, 1f andn %l0, _TIF_SYSCALL_SUCCESS, %l0 ldub [%curptr + TI_SYS_NOERROR], %l0 brz,pt %l0, 1f nop ba,pt %xcc, 80f stx %l0, [%curptr + TI_FLAGS] stb %g0, [%curptr + TI_SYS_NOERROR] 1: cmp %o0, -ERESTART_RESTARTBLOCK Loading
arch/sparc64/kernel/irq.c +7 −13 Original line number Diff line number Diff line Loading @@ -782,8 +782,14 @@ static void distribute_irqs(void) } #endif struct sun5_timer { u64 count0; u64 limit0; u64 count1; u64 limit1; }; struct sun5_timer *prom_timers; static struct sun5_timer *prom_timers; static u64 prom_limit0, prom_limit1; static void map_prom_timers(void) Loading Loading @@ -839,18 +845,6 @@ static void kill_prom_timer(void) : "g1", "g2"); } void enable_prom_timer(void) { if (!prom_timers) return; /* Set it to whatever was there before. */ prom_timers->limit1 = prom_limit1; prom_timers->count1 = 0; prom_timers->limit0 = prom_limit0; prom_timers->count0 = 0; } void init_irqwork_curcpu(void) { register struct irq_work_struct *workp asm("o2"); Loading
arch/sparc64/kernel/process.c +1 −1 Original line number Diff line number Diff line Loading @@ -621,8 +621,8 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, memcpy(child_trap_frame, (((struct sparc_stackf *)regs)-1), (TRACEREG_SZ+STACKFRAME_SZ)); t->flags = (t->flags & ~((0xffUL << TI_FLAG_CWP_SHIFT) | (0xffUL << TI_FLAG_CURRENT_DS_SHIFT))) | _TIF_NEWCHILD | (((regs->tstate + 1) & TSTATE_CWP) << TI_FLAG_CWP_SHIFT); t->new_child = 1; t->ksp = ((unsigned long) child_trap_frame) - STACK_BIAS; t->kregs = (struct pt_regs *)(child_trap_frame+sizeof(struct sparc_stackf)); t->fpsaved[0] = 0; Loading
arch/sparc64/kernel/smp.c +1 −1 Original line number Diff line number Diff line Loading @@ -137,7 +137,7 @@ void __init smp_callin(void) /* Clear this or we will die instantly when we * schedule back to this idler... */ clear_thread_flag(TIF_NEWCHILD); current_thread_info()->new_child = 0; /* Attach to the address space of init_task. */ atomic_inc(&init_mm.mm_count); Loading
arch/sparc64/kernel/traps.c +2 −0 Original line number Diff line number Diff line Loading @@ -2125,6 +2125,8 @@ void __init trap_init(void) TI_PCR != offsetof(struct thread_info, pcr_reg) || TI_CEE_STUFF != offsetof(struct thread_info, cee_stuff) || TI_PRE_COUNT != offsetof(struct thread_info, preempt_count) || TI_NEW_CHILD != offsetof(struct thread_info, new_child) || TI_SYS_NOERROR != offsetof(struct thread_info, syscall_noerror) || TI_FPREGS != offsetof(struct thread_info, fpregs) || (TI_FPREGS & (64 - 1))) thread_info_offsets_are_bolixed_dave(); Loading