diff options
-rw-r--r-- | arch/powerpc/kernel/head_8xx.S | 6 | ||||
-rw-r--r-- | arch/powerpc/platforms/8xx/Kconfig | 16 |
2 files changed, 22 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index 9c30938aad52..f7458396cd7c 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S | |||
@@ -298,6 +298,12 @@ InstructionTLBMiss: | |||
298 | stw r10, 0(r0) | 298 | stw r10, 0(r0) |
299 | stw r11, 4(r0) | 299 | stw r11, 4(r0) |
300 | 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 | ||
301 | DO_8xx_CPU6(0x3780, r3) | 307 | DO_8xx_CPU6(0x3780, r3) |
302 | 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 */ |
303 | mfspr r10, SPRN_M_TWB /* Get level 1 table entry address */ | 309 | mfspr r10, SPRN_M_TWB /* Get level 1 table entry address */ |
diff --git a/arch/powerpc/platforms/8xx/Kconfig b/arch/powerpc/platforms/8xx/Kconfig index 8ecd01ad0de8..322b155f24ec 100644 --- a/arch/powerpc/platforms/8xx/Kconfig +++ b/arch/powerpc/platforms/8xx/Kconfig | |||
@@ -100,6 +100,22 @@ config 8xx_CPU6 | |||
100 | 100 | ||
101 | If in doubt, say N here. | 101 | If in doubt, say N here. |
102 | 102 | ||
103 | config 8xx_CPU15 | ||
104 | bool "CPU15 Silicon Errata" | ||
105 | default y | ||
106 | help | ||
107 | This enables a workaround for erratum CPU15 on MPC8xx chips. | ||
108 | This bug can cause incorrect code execution under certain | ||
109 | circumstances. This workaround adds some overhead (a TLB miss | ||
110 | every time execution crosses a page boundary), and you may wish | ||
111 | to disable it if you have worked around the bug in the compiler | ||
112 | (by not placing conditional branches or branches to LR or CTR | ||
113 | in the last word of a page, with a target of the last cache | ||
114 | line in the next page), or if you have used some other | ||
115 | workaround. | ||
116 | |||
117 | If in doubt, say Y here. | ||
118 | |||
103 | choice | 119 | choice |
104 | prompt "Microcode patch selection" | 120 | prompt "Microcode patch selection" |
105 | default NO_UCODE_PATCH | 121 | default NO_UCODE_PATCH |