diff options
Diffstat (limited to 'arch/powerpc/kernel/misc_32.S')
-rw-r--r-- | arch/powerpc/kernel/misc_32.S | 56 |
1 files changed, 39 insertions, 17 deletions
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S index 8b642ab26d37..5c2e253ddfb1 100644 --- a/arch/powerpc/kernel/misc_32.S +++ b/arch/powerpc/kernel/misc_32.S | |||
@@ -206,6 +206,45 @@ _GLOBAL(_nmask_and_or_msr) | |||
206 | isync | 206 | isync |
207 | blr /* Done */ | 207 | blr /* Done */ |
208 | 208 | ||
209 | #ifdef CONFIG_40x | ||
210 | |||
211 | /* | ||
212 | * Do an IO access in real mode | ||
213 | */ | ||
214 | _GLOBAL(real_readb) | ||
215 | mfmsr r7 | ||
216 | ori r0,r7,MSR_DR | ||
217 | xori r0,r0,MSR_DR | ||
218 | sync | ||
219 | mtmsr r0 | ||
220 | sync | ||
221 | isync | ||
222 | lbz r3,0(r3) | ||
223 | sync | ||
224 | mtmsr r7 | ||
225 | sync | ||
226 | isync | ||
227 | blr | ||
228 | |||
229 | /* | ||
230 | * Do an IO access in real mode | ||
231 | */ | ||
232 | _GLOBAL(real_writeb) | ||
233 | mfmsr r7 | ||
234 | ori r0,r7,MSR_DR | ||
235 | xori r0,r0,MSR_DR | ||
236 | sync | ||
237 | mtmsr r0 | ||
238 | sync | ||
239 | isync | ||
240 | stb r3,0(r4) | ||
241 | sync | ||
242 | mtmsr r7 | ||
243 | sync | ||
244 | isync | ||
245 | blr | ||
246 | |||
247 | #endif /* CONFIG_40x */ | ||
209 | 248 | ||
210 | /* | 249 | /* |
211 | * Flush MMU TLB | 250 | * Flush MMU TLB |
@@ -236,12 +275,6 @@ _GLOBAL(_tlbia) | |||
236 | /* Invalidate all entries in TLB1 */ | 275 | /* Invalidate all entries in TLB1 */ |
237 | li r3, 0x0c | 276 | li r3, 0x0c |
238 | tlbivax 0,3 | 277 | tlbivax 0,3 |
239 | /* Invalidate all entries in TLB2 */ | ||
240 | li r3, 0x14 | ||
241 | tlbivax 0,3 | ||
242 | /* Invalidate all entries in TLB3 */ | ||
243 | li r3, 0x1c | ||
244 | tlbivax 0,3 | ||
245 | msync | 278 | msync |
246 | #ifdef CONFIG_SMP | 279 | #ifdef CONFIG_SMP |
247 | tlbsync | 280 | tlbsync |
@@ -336,12 +369,8 @@ _GLOBAL(_tlbie) | |||
336 | #elif defined(CONFIG_FSL_BOOKE) | 369 | #elif defined(CONFIG_FSL_BOOKE) |
337 | rlwinm r4, r3, 0, 0, 19 | 370 | rlwinm r4, r3, 0, 0, 19 |
338 | ori r5, r4, 0x08 /* TLBSEL = 1 */ | 371 | ori r5, r4, 0x08 /* TLBSEL = 1 */ |
339 | ori r6, r4, 0x10 /* TLBSEL = 2 */ | ||
340 | ori r7, r4, 0x18 /* TLBSEL = 3 */ | ||
341 | tlbivax 0, r4 | 372 | tlbivax 0, r4 |
342 | tlbivax 0, r5 | 373 | tlbivax 0, r5 |
343 | tlbivax 0, r6 | ||
344 | tlbivax 0, r7 | ||
345 | msync | 374 | msync |
346 | #if defined(CONFIG_SMP) | 375 | #if defined(CONFIG_SMP) |
347 | tlbsync | 376 | tlbsync |
@@ -793,13 +822,6 @@ _GLOBAL(kernel_thread) | |||
793 | addi r1,r1,16 | 822 | addi r1,r1,16 |
794 | blr | 823 | blr |
795 | 824 | ||
796 | _GLOBAL(kernel_execve) | ||
797 | li r0,__NR_execve | ||
798 | sc | ||
799 | bnslr | ||
800 | neg r3,r3 | ||
801 | blr | ||
802 | |||
803 | /* | 825 | /* |
804 | * This routine is just here to keep GCC happy - sigh... | 826 | * This routine is just here to keep GCC happy - sigh... |
805 | */ | 827 | */ |