aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/kernel/process.c')
-rw-r--r--arch/sparc64/kernel/process.c34
1 files changed, 13 insertions, 21 deletions
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c
index 2084f81a76e1..8a9cd3e165b9 100644
--- a/arch/sparc64/kernel/process.c
+++ b/arch/sparc64/kernel/process.c
@@ -15,7 +15,6 @@
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/sched.h> 16#include <linux/sched.h>
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/kallsyms.h>
19#include <linux/mm.h> 18#include <linux/mm.h>
20#include <linux/fs.h> 19#include <linux/fs.h>
21#include <linux/smp.h> 20#include <linux/smp.h>
@@ -97,7 +96,7 @@ void cpu_idle(void)
97 set_thread_flag(TIF_POLLING_NRFLAG); 96 set_thread_flag(TIF_POLLING_NRFLAG);
98 97
99 while(1) { 98 while(1) {
100 tick_nohz_stop_sched_tick(); 99 tick_nohz_stop_sched_tick(1);
101 100
102 while (!need_resched() && !cpu_is_offline(cpu)) 101 while (!need_resched() && !cpu_is_offline(cpu))
103 sparc64_yield(cpu); 102 sparc64_yield(cpu);
@@ -211,7 +210,7 @@ static void show_regwindow(struct pt_regs *regs)
211 printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n", 210 printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n",
212 rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]); 211 rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]);
213 if (regs->tstate & TSTATE_PRIV) 212 if (regs->tstate & TSTATE_PRIV)
214 print_symbol("I7: <%s>\n", rwk->ins[7]); 213 printk("I7: <%pS>\n", (void *) rwk->ins[7]);
215} 214}
216 215
217#ifdef CONFIG_SMP 216#ifdef CONFIG_SMP
@@ -232,7 +231,7 @@ void __show_regs(struct pt_regs * regs)
232#endif 231#endif
233 printk("TSTATE: %016lx TPC: %016lx TNPC: %016lx Y: %08x %s\n", regs->tstate, 232 printk("TSTATE: %016lx TPC: %016lx TNPC: %016lx Y: %08x %s\n", regs->tstate,
234 regs->tpc, regs->tnpc, regs->y, print_tainted()); 233 regs->tpc, regs->tnpc, regs->y, print_tainted());
235 print_symbol("TPC: <%s>\n", regs->tpc); 234 printk("TPC: <%pS>\n", (void *) regs->tpc);
236 printk("g0: %016lx g1: %016lx g2: %016lx g3: %016lx\n", 235 printk("g0: %016lx g1: %016lx g2: %016lx g3: %016lx\n",
237 regs->u_regs[0], regs->u_regs[1], regs->u_regs[2], 236 regs->u_regs[0], regs->u_regs[1], regs->u_regs[2],
238 regs->u_regs[3]); 237 regs->u_regs[3]);
@@ -245,7 +244,7 @@ void __show_regs(struct pt_regs * regs)
245 printk("o4: %016lx o5: %016lx sp: %016lx ret_pc: %016lx\n", 244 printk("o4: %016lx o5: %016lx sp: %016lx ret_pc: %016lx\n",
246 regs->u_regs[12], regs->u_regs[13], regs->u_regs[14], 245 regs->u_regs[12], regs->u_regs[13], regs->u_regs[14],
247 regs->u_regs[15]); 246 regs->u_regs[15]);
248 print_symbol("RPC: <%s>\n", regs->u_regs[15]); 247 printk("RPC: <%pS>\n", (void *) regs->u_regs[15]);
249 show_regwindow(regs); 248 show_regwindow(regs);
250#ifdef CONFIG_SMP 249#ifdef CONFIG_SMP
251 spin_unlock(&regdump_lock); 250 spin_unlock(&regdump_lock);
@@ -346,9 +345,6 @@ static void sysrq_handle_globreg(int key, struct tty_struct *tty)
346{ 345{
347 struct thread_info *tp = current_thread_info(); 346 struct thread_info *tp = current_thread_info();
348 struct pt_regs *regs = get_irq_regs(); 347 struct pt_regs *regs = get_irq_regs();
349#ifdef CONFIG_KALLSYMS
350 char buffer[KSYM_SYMBOL_LEN];
351#endif
352 unsigned long flags; 348 unsigned long flags;
353 int this_cpu, cpu; 349 int this_cpu, cpu;
354 350
@@ -377,17 +373,13 @@ static void sysrq_handle_globreg(int key, struct tty_struct *tty)
377 gp->tstate, gp->tpc, gp->tnpc, 373 gp->tstate, gp->tpc, gp->tnpc,
378 ((tp && tp->task) ? tp->task->comm : "NULL"), 374 ((tp && tp->task) ? tp->task->comm : "NULL"),
379 ((tp && tp->task) ? tp->task->pid : -1)); 375 ((tp && tp->task) ? tp->task->pid : -1));
380#ifdef CONFIG_KALLSYMS 376
381 if (gp->tstate & TSTATE_PRIV) { 377 if (gp->tstate & TSTATE_PRIV) {
382 sprint_symbol(buffer, gp->tpc); 378 printk(" TPC[%pS] O7[%pS] I7[%pS]\n",
383 printk(" TPC[%s] ", buffer); 379 (void *) gp->tpc,
384 sprint_symbol(buffer, gp->o7); 380 (void *) gp->o7,
385 printk("O7[%s] ", buffer); 381 (void *) gp->i7);
386 sprint_symbol(buffer, gp->i7); 382 } else {
387 printk("I7[%s]\n", buffer);
388 } else
389#endif
390 {
391 printk(" TPC[%lx] O7[%lx] I7[%lx]\n", 383 printk(" TPC[%lx] O7[%lx] I7[%lx]\n",
392 gp->tpc, gp->o7, gp->i7); 384 gp->tpc, gp->o7, gp->i7);
393 } 385 }
@@ -691,9 +683,9 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp,
691 ((unsigned long) child_sf) - STACK_BIAS; 683 ((unsigned long) child_sf) - STACK_BIAS;
692 684
693 /* Special case, if we are spawning a kernel thread from 685 /* Special case, if we are spawning a kernel thread from
694 * a userspace task (via KMOD, NFS, or similar) we must 686 * a userspace task (usermode helper, NFS or similar), we
695 * disable performance counters in the child because the 687 * must disable performance counters in the child because
696 * address space and protection realm are changing. 688 * the address space and protection realm are changing.
697 */ 689 */
698 if (t->flags & _TIF_PERFCTR) { 690 if (t->flags & _TIF_PERFCTR) {
699 t->user_cntd0 = t->user_cntd1 = NULL; 691 t->user_cntd0 = t->user_cntd1 = NULL;