aboutsummaryrefslogtreecommitdiffstats
path: root/arch/hexagon
diff options
context:
space:
mode:
Diffstat (limited to 'arch/hexagon')
-rw-r--r--arch/hexagon/kernel/process.c23
-rw-r--r--arch/hexagon/kernel/smp.c2
-rw-r--r--arch/hexagon/kernel/traps.c8
-rw-r--r--arch/hexagon/kernel/vm_events.c2
4 files changed, 6 insertions, 29 deletions
diff --git a/arch/hexagon/kernel/process.c b/arch/hexagon/kernel/process.c
index 7fcc636b6238..0a0dd5c05b46 100644
--- a/arch/hexagon/kernel/process.c
+++ b/arch/hexagon/kernel/process.c
@@ -52,28 +52,11 @@ void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp)
52 * If hardware or VM offer wait termination even though interrupts 52 * If hardware or VM offer wait termination even though interrupts
53 * are disabled. 53 * are disabled.
54 */ 54 */
55static void default_idle(void) 55void arch_cpu_idle(void)
56{ 56{
57 __vmwait(); 57 __vmwait();
58} 58 /* interrupts wake us up, but irqs are still disabled */
59 59 local_irq_enable();
60void (*idle_sleep)(void) = default_idle;
61
62void cpu_idle(void)
63{
64 while (1) {
65 tick_nohz_idle_enter();
66 local_irq_disable();
67 while (!need_resched()) {
68 idle_sleep();
69 /* interrupts wake us up, but aren't serviced */
70 local_irq_enable(); /* service interrupt */
71 local_irq_disable();
72 }
73 local_irq_enable();
74 tick_nohz_idle_exit();
75 schedule();
76 }
77} 60}
78 61
79/* 62/*
diff --git a/arch/hexagon/kernel/smp.c b/arch/hexagon/kernel/smp.c
index 8e095dffd070..0e364ca43198 100644
--- a/arch/hexagon/kernel/smp.c
+++ b/arch/hexagon/kernel/smp.c
@@ -184,7 +184,7 @@ void __cpuinit start_secondary(void)
184 184
185 local_irq_enable(); 185 local_irq_enable();
186 186
187 cpu_idle(); 187 cpu_startup_entry(CPUHP_ONLINE);
188} 188}
189 189
190 190
diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c
index aaf53f883710..7858663352b9 100644
--- a/arch/hexagon/kernel/traps.c
+++ b/arch/hexagon/kernel/traps.c
@@ -195,14 +195,6 @@ void show_stack(struct task_struct *task, unsigned long *fp)
195 do_show_stack(task, fp, 0); 195 do_show_stack(task, fp, 0);
196} 196}
197 197
198void dump_stack(void)
199{
200 unsigned long *fp;
201 asm("%0 = r30" : "=r" (fp));
202 show_stack(current, fp);
203}
204EXPORT_SYMBOL(dump_stack);
205
206int die(const char *str, struct pt_regs *regs, long err) 198int die(const char *str, struct pt_regs *regs, long err)
207{ 199{
208 static struct { 200 static struct {
diff --git a/arch/hexagon/kernel/vm_events.c b/arch/hexagon/kernel/vm_events.c
index 3e4453091889..741aaa917cda 100644
--- a/arch/hexagon/kernel/vm_events.c
+++ b/arch/hexagon/kernel/vm_events.c
@@ -33,6 +33,8 @@
33 */ 33 */
34void show_regs(struct pt_regs *regs) 34void show_regs(struct pt_regs *regs)
35{ 35{
36 show_regs_print_info(KERN_EMERG);
37
36 printk(KERN_EMERG "restart_r0: \t0x%08lx syscall_nr: %ld\n", 38 printk(KERN_EMERG "restart_r0: \t0x%08lx syscall_nr: %ld\n",
37 regs->restart_r0, regs->syscall_nr); 39 regs->restart_r0, regs->syscall_nr);
38 printk(KERN_EMERG "preds: \t\t0x%08lx\n", regs->preds); 40 printk(KERN_EMERG "preds: \t\t0x%08lx\n", regs->preds);