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) */ |
