diff options
-rw-r--r-- | arch/sh/kernel/cpu/sh3/entry.S | 5 | ||||
-rw-r--r-- | arch/sh/kernel/head.S | 5 | ||||
-rw-r--r-- | arch/sh/kernel/relocate_kernel.S | 14 | ||||
-rw-r--r-- | arch/sh/mm/cache-sh4.c | 4 | ||||
-rw-r--r-- | arch/sh/mm/clear_page.S | 18 | ||||
-rw-r--r-- | arch/sh/mm/copy_page.S | 16 | ||||
-rw-r--r-- | arch/sh/mm/init.c | 1 | ||||
-rw-r--r-- | arch/sh/mm/pg-dma.c | 2 | ||||
-rw-r--r-- | include/asm-sh/entry-macros.S | 3 | ||||
-rw-r--r-- | include/asm-sh/pgtable.h | 6 | ||||
-rw-r--r-- | include/asm-sh/thread_info.h | 8 |
11 files changed, 37 insertions, 45 deletions
diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S index 5de99b498738..7ba3dcbe7504 100644 --- a/arch/sh/kernel/cpu/sh3/entry.S +++ b/arch/sh/kernel/cpu/sh3/entry.S | |||
@@ -335,7 +335,7 @@ general_exception: | |||
335 | /* This code makes some assumptions to improve performance. | 335 | /* This code makes some assumptions to improve performance. |
336 | * Make sure they are stil true. */ | 336 | * Make sure they are stil true. */ |
337 | #if PTRS_PER_PGD != PTRS_PER_PTE | 337 | #if PTRS_PER_PGD != PTRS_PER_PTE |
338 | #error PDG and PTE sizes don't match | 338 | #error PGD and PTE sizes don't match |
339 | #endif | 339 | #endif |
340 | 340 | ||
341 | /* gas doesn't flag impossible values for mov #immediate as an error */ | 341 | /* gas doesn't flag impossible values for mov #immediate as an error */ |
@@ -547,8 +547,9 @@ ENTRY(handle_exception) | |||
547 | bt/s 1f ! It's a kernel to kernel transition. | 547 | bt/s 1f ! It's a kernel to kernel transition. |
548 | mov r15, k0 ! save original stack to k0 | 548 | mov r15, k0 ! save original stack to k0 |
549 | /* User space to kernel */ | 549 | /* User space to kernel */ |
550 | mov #(THREAD_SIZE >> 8), k1 | 550 | mov #(THREAD_SIZE >> 10), k1 |
551 | shll8 k1 ! k1 := THREAD_SIZE | 551 | shll8 k1 ! k1 := THREAD_SIZE |
552 | shll2 k1 | ||
552 | add current, k1 | 553 | add current, k1 |
553 | mov k1, r15 ! change to kernel stack | 554 | mov k1, r15 ! change to kernel stack |
554 | ! | 555 | ! |
diff --git a/arch/sh/kernel/head.S b/arch/sh/kernel/head.S index b5ff23264617..6aca4bc6ec5d 100644 --- a/arch/sh/kernel/head.S +++ b/arch/sh/kernel/head.S | |||
@@ -33,7 +33,7 @@ ENTRY(empty_zero_page) | |||
33 | .long 0x00360000 /* INITRD_START */ | 33 | .long 0x00360000 /* INITRD_START */ |
34 | .long 0x000a0000 /* INITRD_SIZE */ | 34 | .long 0x000a0000 /* INITRD_SIZE */ |
35 | .long 0 | 35 | .long 0 |
36 | .balign 4096,0,4096 | 36 | .balign PAGE_SIZE,0,PAGE_SIZE |
37 | 37 | ||
38 | .text | 38 | .text |
39 | /* | 39 | /* |
@@ -70,8 +70,9 @@ ENTRY(_stext) | |||
70 | ! | 70 | ! |
71 | mov.l 2f, r0 | 71 | mov.l 2f, r0 |
72 | mov r0, r15 ! Set initial r15 (stack pointer) | 72 | mov r0, r15 ! Set initial r15 (stack pointer) |
73 | mov #(THREAD_SIZE >> 8), r1 | 73 | mov #(THREAD_SIZE >> 10), r1 |
74 | shll8 r1 ! r1 = THREAD_SIZE | 74 | shll8 r1 ! r1 = THREAD_SIZE |
75 | shll2 r1 | ||
75 | sub r1, r0 ! | 76 | sub r1, r0 ! |
76 | #ifdef CONFIG_CPU_HAS_SR_RB | 77 | #ifdef CONFIG_CPU_HAS_SR_RB |
77 | ldc r0, r7_bank ! ... and initial thread_info | 78 | ldc r0, r7_bank ! ... and initial thread_info |
diff --git a/arch/sh/kernel/relocate_kernel.S b/arch/sh/kernel/relocate_kernel.S index 8221b37c9773..c66cb3209db5 100644 --- a/arch/sh/kernel/relocate_kernel.S +++ b/arch/sh/kernel/relocate_kernel.S | |||
@@ -7,11 +7,9 @@ | |||
7 | * This source code is licensed under the GNU General Public License, | 7 | * This source code is licensed under the GNU General Public License, |
8 | * Version 2. See the file COPYING for more details. | 8 | * Version 2. See the file COPYING for more details. |
9 | */ | 9 | */ |
10 | |||
11 | #include <linux/linkage.h> | 10 | #include <linux/linkage.h> |
12 | 11 | #include <asm/addrspace.h> | |
13 | #define PAGE_SIZE 4096 /* must be same value as in <asm/page.h> */ | 12 | #include <asm/page.h> |
14 | |||
15 | 13 | ||
16 | .globl relocate_new_kernel | 14 | .globl relocate_new_kernel |
17 | relocate_new_kernel: | 15 | relocate_new_kernel: |
@@ -20,8 +18,8 @@ relocate_new_kernel: | |||
20 | /* r6 = start_address */ | 18 | /* r6 = start_address */ |
21 | /* r7 = vbr_reg */ | 19 | /* r7 = vbr_reg */ |
22 | 20 | ||
23 | mov.l 10f,r8 /* 4096 */ | 21 | mov.l 10f,r8 /* PAGE_SIZE */ |
24 | mov.l 11f,r9 /* 0xa0000000 */ | 22 | mov.l 11f,r9 /* P2SEG */ |
25 | 23 | ||
26 | /* stack setting */ | 24 | /* stack setting */ |
27 | add r8,r5 | 25 | add r8,r5 |
@@ -32,7 +30,7 @@ relocate_new_kernel: | |||
32 | 0: | 30 | 0: |
33 | mov.l @r4+,r0 /* cmd = *ind++ */ | 31 | mov.l @r4+,r0 /* cmd = *ind++ */ |
34 | 32 | ||
35 | 1: /* addr = (cmd | 0xa0000000) & 0xfffffff0 */ | 33 | 1: /* addr = (cmd | P2SEG) & 0xfffffff0 */ |
36 | mov r0,r2 | 34 | mov r0,r2 |
37 | or r9,r2 | 35 | or r9,r2 |
38 | mov #-16,r1 | 36 | mov #-16,r1 |
@@ -92,7 +90,7 @@ relocate_new_kernel: | |||
92 | 10: | 90 | 10: |
93 | .long PAGE_SIZE | 91 | .long PAGE_SIZE |
94 | 11: | 92 | 11: |
95 | .long 0xa0000000 | 93 | .long P2SEG |
96 | 94 | ||
97 | relocate_new_kernel_end: | 95 | relocate_new_kernel_end: |
98 | 96 | ||
diff --git a/arch/sh/mm/cache-sh4.c b/arch/sh/mm/cache-sh4.c index 7e62ba071d64..ae531affccbd 100644 --- a/arch/sh/mm/cache-sh4.c +++ b/arch/sh/mm/cache-sh4.c | |||
@@ -225,7 +225,7 @@ static inline void flush_cache_4096(unsigned long start, | |||
225 | */ | 225 | */ |
226 | if ((cpu_data->flags & CPU_HAS_P2_FLUSH_BUG) || | 226 | if ((cpu_data->flags & CPU_HAS_P2_FLUSH_BUG) || |
227 | (start < CACHE_OC_ADDRESS_ARRAY)) | 227 | (start < CACHE_OC_ADDRESS_ARRAY)) |
228 | exec_offset = 0x20000000; | 228 | exec_offset = 0x20000000; |
229 | 229 | ||
230 | local_irq_save(flags); | 230 | local_irq_save(flags); |
231 | __flush_cache_4096(start | SH_CACHE_ASSOC, | 231 | __flush_cache_4096(start | SH_CACHE_ASSOC, |
@@ -246,7 +246,7 @@ void flush_dcache_page(struct page *page) | |||
246 | 246 | ||
247 | /* Loop all the D-cache */ | 247 | /* Loop all the D-cache */ |
248 | n = cpu_data->dcache.n_aliases; | 248 | n = cpu_data->dcache.n_aliases; |
249 | for (i = 0; i < n; i++, addr += PAGE_SIZE) | 249 | for (i = 0; i < n; i++, addr += 4096) |
250 | flush_cache_4096(addr, phys); | 250 | flush_cache_4096(addr, phys); |
251 | } | 251 | } |
252 | 252 | ||
diff --git a/arch/sh/mm/clear_page.S b/arch/sh/mm/clear_page.S index 7b96425ae270..8a706131e521 100644 --- a/arch/sh/mm/clear_page.S +++ b/arch/sh/mm/clear_page.S | |||
@@ -1,12 +1,12 @@ | |||
1 | /* $Id: clear_page.S,v 1.13 2003/08/25 17:03:10 lethal Exp $ | 1 | /* |
2 | * | ||
3 | * __clear_user_page, __clear_user, clear_page implementation of SuperH | 2 | * __clear_user_page, __clear_user, clear_page implementation of SuperH |
4 | * | 3 | * |
5 | * Copyright (C) 2001 Kaz Kojima | 4 | * Copyright (C) 2001 Kaz Kojima |
6 | * Copyright (C) 2001, 2002 Niibe Yutaka | 5 | * Copyright (C) 2001, 2002 Niibe Yutaka |
7 | * | 6 | * Copyright (C) 2006 Paul Mundt |
8 | */ | 7 | */ |
9 | #include <linux/linkage.h> | 8 | #include <linux/linkage.h> |
9 | #include <asm/page.h> | ||
10 | 10 | ||
11 | /* | 11 | /* |
12 | * clear_page_slow | 12 | * clear_page_slow |
@@ -18,11 +18,11 @@ | |||
18 | /* | 18 | /* |
19 | * r0 --- scratch | 19 | * r0 --- scratch |
20 | * r4 --- to | 20 | * r4 --- to |
21 | * r5 --- to + 4096 | 21 | * r5 --- to + PAGE_SIZE |
22 | */ | 22 | */ |
23 | ENTRY(clear_page_slow) | 23 | ENTRY(clear_page_slow) |
24 | mov r4,r5 | 24 | mov r4,r5 |
25 | mov.w .Llimit,r0 | 25 | mov.l .Llimit,r0 |
26 | add r0,r5 | 26 | add r0,r5 |
27 | mov #0,r0 | 27 | mov #0,r0 |
28 | ! | 28 | ! |
@@ -50,7 +50,7 @@ ENTRY(clear_page_slow) | |||
50 | ! | 50 | ! |
51 | rts | 51 | rts |
52 | nop | 52 | nop |
53 | .Llimit: .word (4096-28) | 53 | .Llimit: .long (PAGE_SIZE-28) |
54 | 54 | ||
55 | ENTRY(__clear_user) | 55 | ENTRY(__clear_user) |
56 | ! | 56 | ! |
@@ -164,10 +164,10 @@ ENTRY(__clear_user) | |||
164 | * r0 --- scratch | 164 | * r0 --- scratch |
165 | * r4 --- to | 165 | * r4 --- to |
166 | * r5 --- orig_to | 166 | * r5 --- orig_to |
167 | * r6 --- to + 4096 | 167 | * r6 --- to + PAGE_SIZE |
168 | */ | 168 | */ |
169 | ENTRY(__clear_user_page) | 169 | ENTRY(__clear_user_page) |
170 | mov.w .L4096,r0 | 170 | mov.l .Lpsz,r0 |
171 | mov r4,r6 | 171 | mov r4,r6 |
172 | add r0,r6 | 172 | add r0,r6 |
173 | mov #0,r0 | 173 | mov #0,r0 |
@@ -191,7 +191,7 @@ ENTRY(__clear_user_page) | |||
191 | ! | 191 | ! |
192 | rts | 192 | rts |
193 | nop | 193 | nop |
194 | .L4096: .word 4096 | 194 | .Lpsz: .long PAGE_SIZE |
195 | 195 | ||
196 | #endif | 196 | #endif |
197 | 197 | ||
diff --git a/arch/sh/mm/copy_page.S b/arch/sh/mm/copy_page.S index 1addffe117c3..397c94c97315 100644 --- a/arch/sh/mm/copy_page.S +++ b/arch/sh/mm/copy_page.S | |||
@@ -1,12 +1,12 @@ | |||
1 | /* $Id: copy_page.S,v 1.8 2003/08/25 17:03:10 lethal Exp $ | 1 | /* |
2 | * | ||
3 | * copy_page, __copy_user_page, __copy_user implementation of SuperH | 2 | * copy_page, __copy_user_page, __copy_user implementation of SuperH |
4 | * | 3 | * |
5 | * Copyright (C) 2001 Niibe Yutaka & Kaz Kojima | 4 | * Copyright (C) 2001 Niibe Yutaka & Kaz Kojima |
6 | * Copyright (C) 2002 Toshinobu Sugioka | 5 | * Copyright (C) 2002 Toshinobu Sugioka |
7 | * | 6 | * Copyright (C) 2006 Paul Mundt |
8 | */ | 7 | */ |
9 | #include <linux/linkage.h> | 8 | #include <linux/linkage.h> |
9 | #include <asm/page.h> | ||
10 | 10 | ||
11 | /* | 11 | /* |
12 | * copy_page_slow | 12 | * copy_page_slow |
@@ -18,7 +18,7 @@ | |||
18 | 18 | ||
19 | /* | 19 | /* |
20 | * r0, r1, r2, r3, r4, r5, r6, r7 --- scratch | 20 | * r0, r1, r2, r3, r4, r5, r6, r7 --- scratch |
21 | * r8 --- from + 4096 | 21 | * r8 --- from + PAGE_SIZE |
22 | * r9 --- not used | 22 | * r9 --- not used |
23 | * r10 --- to | 23 | * r10 --- to |
24 | * r11 --- from | 24 | * r11 --- from |
@@ -30,7 +30,7 @@ ENTRY(copy_page_slow) | |||
30 | mov r4,r10 | 30 | mov r4,r10 |
31 | mov r5,r11 | 31 | mov r5,r11 |
32 | mov r5,r8 | 32 | mov r5,r8 |
33 | mov.w .L4096,r0 | 33 | mov.l .Lpsz,r0 |
34 | add r0,r8 | 34 | add r0,r8 |
35 | ! | 35 | ! |
36 | 1: mov.l @r11+,r0 | 36 | 1: mov.l @r11+,r0 |
@@ -80,7 +80,7 @@ ENTRY(copy_page_slow) | |||
80 | 80 | ||
81 | /* | 81 | /* |
82 | * r0, r1, r2, r3, r4, r5, r6, r7 --- scratch | 82 | * r0, r1, r2, r3, r4, r5, r6, r7 --- scratch |
83 | * r8 --- from + 4096 | 83 | * r8 --- from + PAGE_SIZE |
84 | * r9 --- orig_to | 84 | * r9 --- orig_to |
85 | * r10 --- to | 85 | * r10 --- to |
86 | * r11 --- from | 86 | * r11 --- from |
@@ -94,7 +94,7 @@ ENTRY(__copy_user_page) | |||
94 | mov r5,r11 | 94 | mov r5,r11 |
95 | mov r6,r9 | 95 | mov r6,r9 |
96 | mov r5,r8 | 96 | mov r5,r8 |
97 | mov.w .L4096,r0 | 97 | mov.l .Lpsz,r0 |
98 | add r0,r8 | 98 | add r0,r8 |
99 | ! | 99 | ! |
100 | 1: ocbi @r9 | 100 | 1: ocbi @r9 |
@@ -129,7 +129,7 @@ ENTRY(__copy_user_page) | |||
129 | rts | 129 | rts |
130 | nop | 130 | nop |
131 | #endif | 131 | #endif |
132 | .L4096: .word 4096 | 132 | .Lpsz: .long PAGE_SIZE |
133 | /* | 133 | /* |
134 | * __kernel_size_t __copy_user(void *to, const void *from, __kernel_size_t n); | 134 | * __kernel_size_t __copy_user(void *to, const void *from, __kernel_size_t n); |
135 | * Return the number of bytes NOT copied | 135 | * Return the number of bytes NOT copied |
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index 462bfeac6d9c..59f4cc18235b 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c | |||
@@ -217,7 +217,6 @@ static struct kcore_list kcore_mem, kcore_vmalloc; | |||
217 | 217 | ||
218 | void __init mem_init(void) | 218 | void __init mem_init(void) |
219 | { | 219 | { |
220 | extern unsigned long empty_zero_page[1024]; | ||
221 | int codesize, reservedpages, datasize, initsize; | 220 | int codesize, reservedpages, datasize, initsize; |
222 | int tmp; | 221 | int tmp; |
223 | extern unsigned long memory_start; | 222 | extern unsigned long memory_start; |
diff --git a/arch/sh/mm/pg-dma.c b/arch/sh/mm/pg-dma.c index 1406d2e348ca..bb23679369d6 100644 --- a/arch/sh/mm/pg-dma.c +++ b/arch/sh/mm/pg-dma.c | |||
@@ -39,8 +39,6 @@ static void copy_page_dma(void *to, void *from) | |||
39 | 39 | ||
40 | static void clear_page_dma(void *to) | 40 | static void clear_page_dma(void *to) |
41 | { | 41 | { |
42 | extern unsigned long empty_zero_page[1024]; | ||
43 | |||
44 | /* | 42 | /* |
45 | * We get invoked quite early on, if the DMAC hasn't been initialized | 43 | * We get invoked quite early on, if the DMAC hasn't been initialized |
46 | * yet, fall back on the slow manual implementation. | 44 | * yet, fall back on the slow manual implementation. |
diff --git a/include/asm-sh/entry-macros.S b/include/asm-sh/entry-macros.S index 099fe8189bbe..500030eae7aa 100644 --- a/include/asm-sh/entry-macros.S +++ b/include/asm-sh/entry-macros.S | |||
@@ -23,8 +23,9 @@ | |||
23 | #ifdef CONFIG_HAS_SR_RB | 23 | #ifdef CONFIG_HAS_SR_RB |
24 | stc r7_bank, \ti | 24 | stc r7_bank, \ti |
25 | #else | 25 | #else |
26 | mov #((THREAD_SIZE - 1)>> 8) ^ 0xff, \tmp | 26 | mov #((THREAD_SIZE - 1) >> 10) ^ 0xff, \tmp |
27 | shll8 \tmp | 27 | shll8 \tmp |
28 | shll2 \tmp | ||
28 | mov r15, \ti | 29 | mov r15, \ti |
29 | and \tmp, \ti | 30 | and \tmp, \ti |
30 | #endif | 31 | #endif |
diff --git a/include/asm-sh/pgtable.h b/include/asm-sh/pgtable.h index fa625245051d..f87504abb43f 100644 --- a/include/asm-sh/pgtable.h +++ b/include/asm-sh/pgtable.h | |||
@@ -47,8 +47,8 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; | |||
47 | #define PGDIR_MASK (~(PGDIR_SIZE-1)) | 47 | #define PGDIR_MASK (~(PGDIR_SIZE-1)) |
48 | 48 | ||
49 | /* Entries per level */ | 49 | /* Entries per level */ |
50 | #define PTRS_PER_PTE (1 << PTE_BITS) | 50 | #define PTRS_PER_PTE (PAGE_SIZE / 4) |
51 | #define PTRS_PER_PGD (1 << PGDIR_BITS) | 51 | #define PTRS_PER_PGD (PAGE_SIZE / 4) |
52 | 52 | ||
53 | #define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE) | 53 | #define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE) |
54 | #define FIRST_USER_ADDRESS 0 | 54 | #define FIRST_USER_ADDRESS 0 |
@@ -57,7 +57,7 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; | |||
57 | 57 | ||
58 | /* | 58 | /* |
59 | * First 1MB map is used by fixed purpose. | 59 | * First 1MB map is used by fixed purpose. |
60 | * Currently only 4-enty (16kB) is used (see arch/sh/mm/cache.c) | 60 | * Currently only 4-entry (16kB) is used (see arch/sh/mm/cache.c) |
61 | */ | 61 | */ |
62 | #define VMALLOC_START (P3SEG+0x00100000) | 62 | #define VMALLOC_START (P3SEG+0x00100000) |
63 | #define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE) | 63 | #define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE) |
diff --git a/include/asm-sh/thread_info.h b/include/asm-sh/thread_info.h index 3ebc3f9039eb..0c01dc550819 100644 --- a/include/asm-sh/thread_info.h +++ b/include/asm-sh/thread_info.h | |||
@@ -90,13 +90,7 @@ static inline struct thread_info *current_thread_info(void) | |||
90 | #endif | 90 | #endif |
91 | #define free_thread_info(ti) kfree(ti) | 91 | #define free_thread_info(ti) kfree(ti) |
92 | 92 | ||
93 | #else /* !__ASSEMBLY__ */ | 93 | #endif /* __ASSEMBLY__ */ |
94 | |||
95 | /* how to get the thread information struct from ASM */ | ||
96 | #define GET_THREAD_INFO(reg) \ | ||
97 | stc r7_bank, reg | ||
98 | |||
99 | #endif | ||
100 | 94 | ||
101 | /* | 95 | /* |
102 | * thread information flags | 96 | * thread information flags |