diff options
Diffstat (limited to 'arch/frv/kernel/process.c')
| -rw-r--r-- | arch/frv/kernel/process.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c index 3001b82b1514..54a452136f00 100644 --- a/arch/frv/kernel/process.c +++ b/arch/frv/kernel/process.c | |||
| @@ -77,16 +77,20 @@ void (*idle)(void) = core_sleep_idle; | |||
| 77 | */ | 77 | */ |
| 78 | void cpu_idle(void) | 78 | void cpu_idle(void) |
| 79 | { | 79 | { |
| 80 | int cpu = smp_processor_id(); | ||
| 81 | |||
| 80 | /* endless idle loop with no priority at all */ | 82 | /* endless idle loop with no priority at all */ |
| 81 | while (1) { | 83 | while (1) { |
| 82 | while (!need_resched()) { | 84 | while (!need_resched()) { |
| 83 | irq_stat[smp_processor_id()].idle_timestamp = jiffies; | 85 | irq_stat[cpu].idle_timestamp = jiffies; |
| 84 | 86 | ||
| 85 | if (!frv_dma_inprogress && idle) | 87 | if (!frv_dma_inprogress && idle) |
| 86 | idle(); | 88 | idle(); |
| 87 | } | 89 | } |
| 88 | 90 | ||
| 91 | preempt_enable_no_resched(); | ||
| 89 | schedule(); | 92 | schedule(); |
| 93 | preempt_disable(); | ||
| 90 | } | 94 | } |
| 91 | } | 95 | } |
| 92 | 96 | ||
