diff options
author | Johannes Weiner <jw@emlix.com> | 2009-03-04 10:21:31 -0500 |
---|---|---|
committer | Chris Zankel <chris@zankel.net> | 2009-04-03 02:41:50 -0400 |
commit | e5083a63b6a8546c5fe1e571fe529e3939787ec2 (patch) | |
tree | 5c11db5b0a924f8bcfc404c202630d37ccfd7c3c /arch/xtensa/kernel | |
parent | 7789f89af9e8e426d7a7f173cf465a4fcadba7dd (diff) |
xtensa: nommu support
Add support for !CONFIG_MMU setups.
Signed-off-by: Johannes Weiner <jw@emlix.com>
Signed-off-by: Chris Zankel <chris@zankel.net>
Diffstat (limited to 'arch/xtensa/kernel')
-rw-r--r-- | arch/xtensa/kernel/entry.S | 3 | ||||
-rw-r--r-- | arch/xtensa/kernel/head.S | 3 | ||||
-rw-r--r-- | arch/xtensa/kernel/setup.c | 7 | ||||
-rw-r--r-- | arch/xtensa/kernel/traps.c | 2 | ||||
-rw-r--r-- | arch/xtensa/kernel/vectors.S | 4 |
5 files changed, 17 insertions, 2 deletions
diff --git a/arch/xtensa/kernel/entry.S b/arch/xtensa/kernel/entry.S index a51d36a27389..80d24c485fd3 100644 --- a/arch/xtensa/kernel/entry.S +++ b/arch/xtensa/kernel/entry.S | |||
@@ -1463,6 +1463,7 @@ ENTRY(_spill_registers) | |||
1463 | callx0 a0 # should not return | 1463 | callx0 a0 # should not return |
1464 | 1: j 1b | 1464 | 1: j 1b |
1465 | 1465 | ||
1466 | #ifdef CONFIG_MMU | ||
1466 | /* | 1467 | /* |
1467 | * We should never get here. Bail out! | 1468 | * We should never get here. Bail out! |
1468 | */ | 1469 | */ |
@@ -1775,7 +1776,7 @@ ENTRY(fast_store_prohibited) | |||
1775 | bbsi.l a2, PS_UM_BIT, 1f | 1776 | bbsi.l a2, PS_UM_BIT, 1f |
1776 | j _kernel_exception | 1777 | j _kernel_exception |
1777 | 1: j _user_exception | 1778 | 1: j _user_exception |
1778 | 1779 | #endif /* CONFIG_MMU */ | |
1779 | 1780 | ||
1780 | /* | 1781 | /* |
1781 | * System Calls. | 1782 | * System Calls. |
diff --git a/arch/xtensa/kernel/head.S b/arch/xtensa/kernel/head.S index 67e69139520b..d092c225d5b7 100644 --- a/arch/xtensa/kernel/head.S +++ b/arch/xtensa/kernel/head.S | |||
@@ -235,8 +235,9 @@ should_never_return: | |||
235 | */ | 235 | */ |
236 | 236 | ||
237 | .section ".bss.page_aligned", "w" | 237 | .section ".bss.page_aligned", "w" |
238 | #ifdef CONFIG_MMU | ||
238 | ENTRY(swapper_pg_dir) | 239 | ENTRY(swapper_pg_dir) |
239 | .fill PAGE_SIZE, 1, 0 | 240 | .fill PAGE_SIZE, 1, 0 |
241 | #endif | ||
240 | ENTRY(empty_zero_page) | 242 | ENTRY(empty_zero_page) |
241 | .fill PAGE_SIZE, 1, 0 | 243 | .fill PAGE_SIZE, 1, 0 |
242 | |||
diff --git a/arch/xtensa/kernel/setup.c b/arch/xtensa/kernel/setup.c index 4ec1633c2941..1e5a034fe011 100644 --- a/arch/xtensa/kernel/setup.c +++ b/arch/xtensa/kernel/setup.c | |||
@@ -84,7 +84,13 @@ sysmem_info_t __initdata sysmem; | |||
84 | int initrd_is_mapped; | 84 | int initrd_is_mapped; |
85 | #endif | 85 | #endif |
86 | 86 | ||
87 | #ifdef CONFIG_MMU | ||
87 | extern void init_mmu(void); | 88 | extern void init_mmu(void); |
89 | #else | ||
90 | static inline void init_mmu(void) { } | ||
91 | #endif | ||
92 | |||
93 | extern void zones_init(void); | ||
88 | 94 | ||
89 | /* | 95 | /* |
90 | * Boot parameter parsing. | 96 | * Boot parameter parsing. |
@@ -286,6 +292,7 @@ void __init setup_arch(char **cmdline_p) | |||
286 | 292 | ||
287 | 293 | ||
288 | paging_init(); | 294 | paging_init(); |
295 | zones_init(); | ||
289 | 296 | ||
290 | #ifdef CONFIG_VT | 297 | #ifdef CONFIG_VT |
291 | # if defined(CONFIG_VGA_CONSOLE) | 298 | # if defined(CONFIG_VGA_CONSOLE) |
diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c index 6b4a9d79e7be..9f0b71189e94 100644 --- a/arch/xtensa/kernel/traps.c +++ b/arch/xtensa/kernel/traps.c | |||
@@ -104,6 +104,7 @@ static dispatch_init_table_t __initdata dispatch_init_table[] = { | |||
104 | #endif | 104 | #endif |
105 | { EXCCAUSE_UNALIGNED, KRNL, fast_unaligned }, | 105 | { EXCCAUSE_UNALIGNED, KRNL, fast_unaligned }, |
106 | #endif | 106 | #endif |
107 | #ifdef CONFIG_MMU | ||
107 | { EXCCAUSE_ITLB_MISS, 0, do_page_fault }, | 108 | { EXCCAUSE_ITLB_MISS, 0, do_page_fault }, |
108 | { EXCCAUSE_ITLB_MISS, USER|KRNL, fast_second_level_miss}, | 109 | { EXCCAUSE_ITLB_MISS, USER|KRNL, fast_second_level_miss}, |
109 | { EXCCAUSE_ITLB_MULTIHIT, 0, do_multihit }, | 110 | { EXCCAUSE_ITLB_MULTIHIT, 0, do_multihit }, |
@@ -118,6 +119,7 @@ static dispatch_init_table_t __initdata dispatch_init_table[] = { | |||
118 | { EXCCAUSE_STORE_CACHE_ATTRIBUTE, USER|KRNL, fast_store_prohibited }, | 119 | { EXCCAUSE_STORE_CACHE_ATTRIBUTE, USER|KRNL, fast_store_prohibited }, |
119 | { EXCCAUSE_STORE_CACHE_ATTRIBUTE, 0, do_page_fault }, | 120 | { EXCCAUSE_STORE_CACHE_ATTRIBUTE, 0, do_page_fault }, |
120 | { EXCCAUSE_LOAD_CACHE_ATTRIBUTE, 0, do_page_fault }, | 121 | { EXCCAUSE_LOAD_CACHE_ATTRIBUTE, 0, do_page_fault }, |
122 | #endif /* CONFIG_MMU */ | ||
121 | /* XCCHAL_EXCCAUSE_FLOATING_POINT unhandled */ | 123 | /* XCCHAL_EXCCAUSE_FLOATING_POINT unhandled */ |
122 | #if XTENSA_HAVE_COPROCESSOR(0) | 124 | #if XTENSA_HAVE_COPROCESSOR(0) |
123 | COPROCESSOR(0), | 125 | COPROCESSOR(0), |
diff --git a/arch/xtensa/kernel/vectors.S b/arch/xtensa/kernel/vectors.S index eb2d7bb69ee0..74a7518faf16 100644 --- a/arch/xtensa/kernel/vectors.S +++ b/arch/xtensa/kernel/vectors.S | |||
@@ -309,6 +309,7 @@ ENTRY(_DoubleExceptionVector) | |||
309 | * All other exceptions are unexpected and thus unrecoverable! | 309 | * All other exceptions are unexpected and thus unrecoverable! |
310 | */ | 310 | */ |
311 | 311 | ||
312 | #ifdef CONFIG_MMU | ||
312 | .extern fast_second_level_miss_double_kernel | 313 | .extern fast_second_level_miss_double_kernel |
313 | 314 | ||
314 | .Lksp: /* a0: a0, a1: a1, a2: a2, a3: trashed, depc: depc, excsave: a3 */ | 315 | .Lksp: /* a0: a0, a1: a1, a2: a2, a3: trashed, depc: depc, excsave: a3 */ |
@@ -319,6 +320,9 @@ ENTRY(_DoubleExceptionVector) | |||
319 | bnez a3, .Lunrecoverable | 320 | bnez a3, .Lunrecoverable |
320 | 1: movi a3, fast_second_level_miss_double_kernel | 321 | 1: movi a3, fast_second_level_miss_double_kernel |
321 | jx a3 | 322 | jx a3 |
323 | #else | ||
324 | .equ .Lksp, .Lunrecoverable | ||
325 | #endif | ||
322 | 326 | ||
323 | /* Critical! We can't handle this situation. PANIC! */ | 327 | /* Critical! We can't handle this situation. PANIC! */ |
324 | 328 | ||