diff options
author | Scott Wood <scottwood@freescale.com> | 2007-06-25 15:50:41 -0400 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2007-10-03 21:36:36 -0400 |
commit | 7401685242fbcbf4b0660726372c77a88c4af17d (patch) | |
tree | 71b814468d705c2c48184161c38a0295c832239d /arch/powerpc/platforms/8xx | |
parent | 663edbd2640447dc43840568cd5701e6c9878d63 (diff) |
[POWERPC] 8xx: Work around CPU15 erratum.
The CPU15 erratum on MPC8xx chips can cause incorrect code execution
under certain circumstances, where there is a conditional or indirect
branch in the last word of a page, with a target in the last cache line
of the next page. This patch implements one of the suggested
workarounds, by forcing a TLB miss whenever execution crosses a page
boundary. This is done by invalidating the pages before and after the
one being loaded into the TLB in the ITLB miss handler.
Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/platforms/8xx')
-rw-r--r-- | arch/powerpc/platforms/8xx/Kconfig | 16 |
1 files changed, 16 insertions, 0 deletions
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 |