diff options
Diffstat (limited to 'arch/powerpc/kernel/head_8xx.S')
| -rw-r--r-- | arch/powerpc/kernel/head_8xx.S | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index 901be47a02a9..f7458396cd7c 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S | |||
| @@ -38,12 +38,9 @@ | |||
| 38 | #else | 38 | #else |
| 39 | #define DO_8xx_CPU6(val, reg) | 39 | #define DO_8xx_CPU6(val, reg) |
| 40 | #endif | 40 | #endif |
| 41 | .text | 41 | .section .text.head, "ax" |
| 42 | .globl _stext | 42 | _ENTRY(_stext); |
| 43 | _stext: | 43 | _ENTRY(_start); |
| 44 | .text | ||
| 45 | .globl _start | ||
| 46 | _start: | ||
| 47 | 44 | ||
| 48 | /* MPC8xx | 45 | /* MPC8xx |
| 49 | * This port was done on an MBX board with an 860. Right now I only | 46 | * This port was done on an MBX board with an 860. Right now I only |
| @@ -301,6 +298,12 @@ InstructionTLBMiss: | |||
| 301 | stw r10, 0(r0) | 298 | stw r10, 0(r0) |
| 302 | stw r11, 4(r0) | 299 | stw r11, 4(r0) |
| 303 | mfspr r10, SPRN_SRR0 /* Get effective address of fault */ | 300 | mfspr r10, SPRN_SRR0 /* Get effective address of fault */ |
| 301 | #ifdef CONFIG_8xx_CPU15 | ||
| 302 | addi r11, r10, 0x1000 | ||
| 303 | tlbie r11 | ||
| 304 | addi r11, r10, -0x1000 | ||
| 305 | tlbie r11 | ||
| 306 | #endif | ||
| 304 | DO_8xx_CPU6(0x3780, r3) | 307 | DO_8xx_CPU6(0x3780, r3) |
| 305 | mtspr SPRN_MD_EPN, r10 /* Have to use MD_EPN for walk, MI_EPN can't */ | 308 | mtspr SPRN_MD_EPN, r10 /* Have to use MD_EPN for walk, MI_EPN can't */ |
| 306 | mfspr r10, SPRN_M_TWB /* Get level 1 table entry address */ | 309 | mfspr r10, SPRN_M_TWB /* Get level 1 table entry address */ |
| @@ -730,13 +733,13 @@ initial_mmu: | |||
| 730 | mtspr SPRN_MD_TWC, r9 | 733 | mtspr SPRN_MD_TWC, r9 |
| 731 | li r11, MI_BOOTINIT /* Create RPN for address 0 */ | 734 | li r11, MI_BOOTINIT /* Create RPN for address 0 */ |
| 732 | addis r11, r11, 0x0080 /* Add 8M */ | 735 | addis r11, r11, 0x0080 /* Add 8M */ |
| 733 | mtspr SPRN_MD_RPN, r8 | 736 | mtspr SPRN_MD_RPN, r11 |
| 734 | 737 | ||
| 735 | addis r8, r8, 0x0080 /* Add 8M */ | 738 | addis r8, r8, 0x0080 /* Add 8M */ |
| 736 | mtspr SPRN_MD_EPN, r8 | 739 | mtspr SPRN_MD_EPN, r8 |
| 737 | mtspr SPRN_MD_TWC, r9 | 740 | mtspr SPRN_MD_TWC, r9 |
| 738 | addis r11, r11, 0x0080 /* Add 8M */ | 741 | addis r11, r11, 0x0080 /* Add 8M */ |
| 739 | mtspr SPRN_MD_RPN, r8 | 742 | mtspr SPRN_MD_RPN, r11 |
| 740 | #endif | 743 | #endif |
| 741 | 744 | ||
| 742 | /* Since the cache is enabled according to the information we | 745 | /* Since the cache is enabled according to the information we |
| @@ -835,14 +838,6 @@ empty_zero_page: | |||
| 835 | swapper_pg_dir: | 838 | swapper_pg_dir: |
| 836 | .space 4096 | 839 | .space 4096 |
| 837 | 840 | ||
| 838 | /* | ||
| 839 | * This space gets a copy of optional info passed to us by the bootstrap | ||
| 840 | * Used to pass parameters into the kernel like root=/dev/sda1, etc. | ||
| 841 | */ | ||
| 842 | .globl cmd_line | ||
| 843 | cmd_line: | ||
| 844 | .space 512 | ||
| 845 | |||
| 846 | /* Room for two PTE table poiners, usually the kernel and current user | 841 | /* Room for two PTE table poiners, usually the kernel and current user |
| 847 | * pointer to their respective root page table (pgdir). | 842 | * pointer to their respective root page table (pgdir). |
| 848 | */ | 843 | */ |
