diff options
Diffstat (limited to 'arch/sh/kernel/process.c')
-rw-r--r-- | arch/sh/kernel/process.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c index 6dce9d0b81f8..fd4f240b833d 100644 --- a/arch/sh/kernel/process.c +++ b/arch/sh/kernel/process.c | |||
@@ -51,28 +51,24 @@ void enable_hlt(void) | |||
51 | 51 | ||
52 | EXPORT_SYMBOL(enable_hlt); | 52 | EXPORT_SYMBOL(enable_hlt); |
53 | 53 | ||
54 | void default_idle(void) | 54 | void cpu_idle(void) |
55 | { | 55 | { |
56 | /* endless idle loop with no priority at all */ | 56 | /* endless idle loop with no priority at all */ |
57 | while (1) { | 57 | while (1) { |
58 | if (hlt_counter) { | 58 | if (hlt_counter) { |
59 | while (1) | 59 | while (!need_resched()) |
60 | if (need_resched()) | 60 | cpu_relax(); |
61 | break; | ||
62 | } else { | 61 | } else { |
63 | while (!need_resched()) | 62 | while (!need_resched()) |
64 | cpu_sleep(); | 63 | cpu_sleep(); |
65 | } | 64 | } |
66 | 65 | ||
66 | preempt_enable_no_resched(); | ||
67 | schedule(); | 67 | schedule(); |
68 | preempt_disable(); | ||
68 | } | 69 | } |
69 | } | 70 | } |
70 | 71 | ||
71 | void cpu_idle(void) | ||
72 | { | ||
73 | default_idle(); | ||
74 | } | ||
75 | |||
76 | void machine_restart(char * __unused) | 72 | void machine_restart(char * __unused) |
77 | { | 73 | { |
78 | /* SR.BL=1 and invoke address error to let CPU reset (manual reset) */ | 74 | /* SR.BL=1 and invoke address error to let CPU reset (manual reset) */ |