diff options
-rw-r--r-- | arch/mips/include/asm/idle.h | 3 | ||||
-rw-r--r-- | arch/mips/kernel/genex.S | 6 | ||||
-rw-r--r-- | arch/mips/kernel/idle.c | 6 |
3 files changed, 11 insertions, 4 deletions
diff --git a/arch/mips/include/asm/idle.h b/arch/mips/include/asm/idle.h index be6f807c1e3f..d192158886b1 100644 --- a/arch/mips/include/asm/idle.h +++ b/arch/mips/include/asm/idle.h | |||
@@ -4,7 +4,8 @@ | |||
4 | #include <linux/linkage.h> | 4 | #include <linux/linkage.h> |
5 | 5 | ||
6 | extern void (*cpu_wait)(void); | 6 | extern void (*cpu_wait)(void); |
7 | extern asmlinkage void r4k_wait(void); | 7 | extern void r4k_wait(void); |
8 | extern asmlinkage void __r4k_wait(void); | ||
8 | extern void r4k_wait_irqoff(void); | 9 | extern void r4k_wait_irqoff(void); |
9 | extern void __pastwait(void); | 10 | extern void __pastwait(void); |
10 | 11 | ||
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S index 9098829bfcb0..31fa856829cb 100644 --- a/arch/mips/kernel/genex.S +++ b/arch/mips/kernel/genex.S | |||
@@ -122,7 +122,7 @@ handle_vcei: | |||
122 | __FINIT | 122 | __FINIT |
123 | 123 | ||
124 | .align 5 /* 32 byte rollback region */ | 124 | .align 5 /* 32 byte rollback region */ |
125 | LEAF(r4k_wait) | 125 | LEAF(__r4k_wait) |
126 | .set push | 126 | .set push |
127 | .set noreorder | 127 | .set noreorder |
128 | /* start of rollback region */ | 128 | /* start of rollback region */ |
@@ -146,14 +146,14 @@ LEAF(r4k_wait) | |||
146 | jr ra | 146 | jr ra |
147 | nop | 147 | nop |
148 | .set pop | 148 | .set pop |
149 | END(r4k_wait) | 149 | END(__r4k_wait) |
150 | 150 | ||
151 | .macro BUILD_ROLLBACK_PROLOGUE handler | 151 | .macro BUILD_ROLLBACK_PROLOGUE handler |
152 | FEXPORT(rollback_\handler) | 152 | FEXPORT(rollback_\handler) |
153 | .set push | 153 | .set push |
154 | .set noat | 154 | .set noat |
155 | MFC0 k0, CP0_EPC | 155 | MFC0 k0, CP0_EPC |
156 | PTR_LA k1, r4k_wait | 156 | PTR_LA k1, __r4k_wait |
157 | ori k0, 0x1f /* 32 byte rollback region */ | 157 | ori k0, 0x1f /* 32 byte rollback region */ |
158 | xori k0, 0x1f | 158 | xori k0, 0x1f |
159 | bne k0, k1, 9f | 159 | bne k0, k1, 9f |
diff --git a/arch/mips/kernel/idle.c b/arch/mips/kernel/idle.c index 985cc02786e3..3b09b888afa9 100644 --- a/arch/mips/kernel/idle.c +++ b/arch/mips/kernel/idle.c | |||
@@ -45,6 +45,12 @@ static void r39xx_wait(void) | |||
45 | local_irq_enable(); | 45 | local_irq_enable(); |
46 | } | 46 | } |
47 | 47 | ||
48 | void r4k_wait(void) | ||
49 | { | ||
50 | local_irq_enable(); | ||
51 | __r4k_wait(); | ||
52 | } | ||
53 | |||
48 | /* | 54 | /* |
49 | * This variant is preferable as it allows testing need_resched and going to | 55 | * This variant is preferable as it allows testing need_resched and going to |
50 | * sleep depending on the outcome atomically. Unfortunately the "It is | 56 | * sleep depending on the outcome atomically. Unfortunately the "It is |