diff options
author | Hyok S. Choi <hyok.choi@samsung.com> | 2006-09-28 08:46:34 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-09-28 15:17:30 -0400 |
commit | 6afd6fae1d5f7e7129a10c4f3e32018966eeac1c (patch) | |
tree | 4b7470f0f771c4e97b18f83db0bd4ca3d529684b /arch | |
parent | 0f45d7f36b766cb668cebfb5d4d2f67b4a8676ba (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')
-rw-r--r-- | arch/arm/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/kernel/head-nommu.S | 5 | ||||
-rw-r--r-- | arch/arm/mm/Kconfig | 12 |
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 | ||
96 | config VECTORS_BASE | 96 | config 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 | ||
527 | config 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 | |||
527 | config CPU_ICACHE_DISABLE | 539 | config 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) |