aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorHyok S. Choi <hyok.choi@samsung.com>2006-09-28 08:46:34 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-09-28 15:17:30 -0400
commit6afd6fae1d5f7e7129a10c4f3e32018966eeac1c (patch)
tree4b7470f0f771c4e97b18f83db0bd4ca3d529684b /arch/arm
parent0f45d7f36b766cb668cebfb5d4d2f67b4a8676ba (diff)
[ARM] nommu: confirms the CR_V bit in nommu mode
In nommu mode, the exception vector location depends on the platforms. Some of the implementations may have some special exception control forwarding method in their ROM/flash and for some of them has its own re-mapping mechanism by the h/w. This patch introduces a special configuration CONFIG_CPU_HIGH_VECTOR which turns on the CR_V bit in nommu mode. The CR_V bit is turned off by default. This feature depends on CP15 and does not supported by ARM740. Signed-off-by: Hyok S. Choi <hyok.choi@samsung.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/kernel/head-nommu.S5
-rw-r--r--arch/arm/mm/Kconfig12
3 files changed, 18 insertions, 1 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 2673fee3281c..ea7640af0f1e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -95,7 +95,7 @@ config ARCH_MTD_XIP
95 95
96config VECTORS_BASE 96config VECTORS_BASE
97 hex 97 hex
98 default 0xffff0000 if MMU 98 default 0xffff0000 if MMU || CPU_HIGH_VECTOR
99 default DRAM_BASE if REMAP_VECTORS_TO_RAM 99 default DRAM_BASE if REMAP_VECTORS_TO_RAM
100 default 0x00000000 100 default 0x00000000
101 help 101 help
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 698a537915dd..f359a189dcf2 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -77,6 +77,11 @@ __after_proc_init:
77#ifdef CONFIG_CPU_ICACHE_DISABLE 77#ifdef CONFIG_CPU_ICACHE_DISABLE
78 bic r0, r0, #CR_I 78 bic r0, r0, #CR_I
79#endif 79#endif
80#ifdef CONFIG_CPU_HIGH_VECTOR
81 orr r0, r0, #CR_V
82#else
83 bic r0, r0, #CR_V
84#endif
80 mcr p15, 0, r0, c1, c0, 0 @ write control reg 85 mcr p15, 0, r0, c1, c0, 0 @ write control reg
81#endif /* CONFIG_CPU_CP15 */ 86#endif /* CONFIG_CPU_CP15 */
82 87
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index 6c1bd424ea61..c0bfb8212b77 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -524,6 +524,18 @@ config CPU_BIG_ENDIAN
524 port must properly enable any big-endian related features 524 port must properly enable any big-endian related features
525 of your chipset/board/processor. 525 of your chipset/board/processor.
526 526
527config CPU_HIGH_VECTOR
528 depends !MMU && CPU_CP15 && !CPU_ARM740T
529 bool "Select the High exception vector"
530 default n
531 help
532 Say Y here to select high exception vector(0xFFFF0000~).
533 The exception vector can be vary depending on the platform
534 design in nommu mode. If your platform needs to select
535 high exception vector, say Y.
536 Otherwise or if you are unsure, say N, and the low exception
537 vector (0x00000000~) will be used.
538
527config CPU_ICACHE_DISABLE 539config CPU_ICACHE_DISABLE
528 bool "Disable I-Cache (I-bit)" 540 bool "Disable I-Cache (I-bit)"
529 depends on CPU_CP15 && !(CPU_ARM610 || CPU_ARM710 || CPU_ARM720T || CPU_ARM740T || CPU_XSCALE || CPU_XSC3) 541 depends on CPU_CP15 && !(CPU_ARM610 || CPU_ARM710 || CPU_ARM720T || CPU_ARM740T || CPU_XSCALE || CPU_XSC3)