diff options
-rw-r--r-- | arch/mips/kernel/cpu-probe.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index cde88285a52f..552d2b6c191e 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
@@ -53,14 +53,13 @@ static void r4k_wait(void) | |||
53 | /* The Au1xxx wait is available only if using 32khz counter or | 53 | /* The Au1xxx wait is available only if using 32khz counter or |
54 | * external timer source, but specifically not CP0 Counter. */ | 54 | * external timer source, but specifically not CP0 Counter. */ |
55 | int allow_au1k_wait; | 55 | int allow_au1k_wait; |
56 | |||
56 | static void au1k_wait(void) | 57 | static void au1k_wait(void) |
57 | { | 58 | { |
58 | unsigned long addr = 0; | ||
59 | /* using the wait instruction makes CP0 counter unusable */ | 59 | /* using the wait instruction makes CP0 counter unusable */ |
60 | __asm__("la %0,au1k_wait\n\t" | 60 | __asm__(".set mips3\n\t" |
61 | ".set mips3\n\t" | 61 | "cache 0x14, 0(%0)\n\t" |
62 | "cache 0x14,0(%0)\n\t" | 62 | "cache 0x14, 32(%0)\n\t" |
63 | "cache 0x14,32(%0)\n\t" | ||
64 | "sync\n\t" | 63 | "sync\n\t" |
65 | "nop\n\t" | 64 | "nop\n\t" |
66 | "wait\n\t" | 65 | "wait\n\t" |
@@ -69,7 +68,7 @@ static void au1k_wait(void) | |||
69 | "nop\n\t" | 68 | "nop\n\t" |
70 | "nop\n\t" | 69 | "nop\n\t" |
71 | ".set mips0\n\t" | 70 | ".set mips0\n\t" |
72 | : : "r" (addr)); | 71 | : : "r" (au1k_wait)); |
73 | } | 72 | } |
74 | 73 | ||
75 | static inline void check_wait(void) | 74 | static inline void check_wait(void) |