diff options
Diffstat (limited to 'arch/v850/kernel/process.c')
| -rw-r--r-- | arch/v850/kernel/process.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/v850/kernel/process.c b/arch/v850/kernel/process.c index 9c708c32c1f0..39cf247cdae4 100644 --- a/arch/v850/kernel/process.c +++ b/arch/v850/kernel/process.c | |||
| @@ -36,11 +36,8 @@ extern void ret_from_fork (void); | |||
| 36 | /* The idle loop. */ | 36 | /* The idle loop. */ |
| 37 | void default_idle (void) | 37 | void default_idle (void) |
| 38 | { | 38 | { |
| 39 | while (1) { | 39 | while (! need_resched ()) |
| 40 | while (! need_resched ()) | 40 | asm ("halt; nop; nop; nop; nop; nop" ::: "cc"); |
| 41 | asm ("halt; nop; nop; nop; nop; nop" ::: "cc"); | ||
| 42 | schedule (); | ||
| 43 | } | ||
| 44 | } | 41 | } |
| 45 | 42 | ||
| 46 | void (*idle)(void) = default_idle; | 43 | void (*idle)(void) = default_idle; |
| @@ -54,7 +51,14 @@ void (*idle)(void) = default_idle; | |||
| 54 | void cpu_idle (void) | 51 | void cpu_idle (void) |
| 55 | { | 52 | { |
| 56 | /* endless idle loop with no priority at all */ | 53 | /* endless idle loop with no priority at all */ |
| 57 | (*idle) (); | 54 | while (1) { |
| 55 | while (!need_resched()) | ||
| 56 | (*idle) (); | ||
| 57 | |||
| 58 | preempt_enable_no_resched(); | ||
| 59 | schedule(); | ||
| 60 | preempt_disable(); | ||
| 61 | } | ||
| 58 | } | 62 | } |
| 59 | 63 | ||
| 60 | /* | 64 | /* |
