diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-04 00:57:06 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-04 00:57:06 -0400 |
commit | 8a0382f6fceaf0c6479e582e1054f36333ea3d24 (patch) | |
tree | 2ec107d486a57584f2b4ae431e70abbc11661d68 /arch | |
parent | 0b5759c654e74c8dc317ea2c6b3a7476160f688a (diff) | |
parent | 0a3d31b79e7fa600108e699805e2b2f9ea1f3194 (diff) |
Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev
* 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev:
m32r: Fix IPI function calls for SMP
m32r: Fix set_memory() for DISCONTIGMEM
m32r: add rtc_lock variable
m32r: define ioread* and iowrite* macros
m32r: export delay loop symbols
m32r: fix tme_handler
Diffstat (limited to 'arch')
-rw-r--r-- | arch/m32r/include/asm/io.h | 7 | ||||
-rw-r--r-- | arch/m32r/kernel/m32r_ksyms.c | 6 | ||||
-rw-r--r-- | arch/m32r/kernel/time.c | 9 | ||||
-rw-r--r-- | arch/m32r/kernel/traps.c | 4 | ||||
-rw-r--r-- | arch/m32r/lib/delay.c | 4 | ||||
-rw-r--r-- | arch/m32r/mm/discontig.c | 5 | ||||
-rw-r--r-- | arch/m32r/mm/mmu.S | 12 |
7 files changed, 34 insertions, 13 deletions
diff --git a/arch/m32r/include/asm/io.h b/arch/m32r/include/asm/io.h index d06933bd6318..4010f1fc5b65 100644 --- a/arch/m32r/include/asm/io.h +++ b/arch/m32r/include/asm/io.h | |||
@@ -162,6 +162,13 @@ static inline void _writel(unsigned long l, unsigned long addr) | |||
162 | #define __raw_writew writew | 162 | #define __raw_writew writew |
163 | #define __raw_writel writel | 163 | #define __raw_writel writel |
164 | 164 | ||
165 | #define ioread8 read | ||
166 | #define ioread16 readw | ||
167 | #define ioread32 readl | ||
168 | #define iowrite8 writeb | ||
169 | #define iowrite16 writew | ||
170 | #define iowrite32 writel | ||
171 | |||
165 | #define mmiowb() | 172 | #define mmiowb() |
166 | 173 | ||
167 | #define flush_write_buffers() do { } while (0) /* M32R_FIXME */ | 174 | #define flush_write_buffers() do { } while (0) /* M32R_FIXME */ |
diff --git a/arch/m32r/kernel/m32r_ksyms.c b/arch/m32r/kernel/m32r_ksyms.c index 22624b51d4d3..700570747a90 100644 --- a/arch/m32r/kernel/m32r_ksyms.c +++ b/arch/m32r/kernel/m32r_ksyms.c | |||
@@ -23,12 +23,6 @@ EXPORT_SYMBOL(__ioremap); | |||
23 | EXPORT_SYMBOL(iounmap); | 23 | EXPORT_SYMBOL(iounmap); |
24 | EXPORT_SYMBOL(kernel_thread); | 24 | EXPORT_SYMBOL(kernel_thread); |
25 | 25 | ||
26 | /* Networking helper routines. */ | ||
27 | /* Delay loops */ | ||
28 | EXPORT_SYMBOL(__udelay); | ||
29 | EXPORT_SYMBOL(__delay); | ||
30 | EXPORT_SYMBOL(__const_udelay); | ||
31 | |||
32 | EXPORT_SYMBOL(strncpy_from_user); | 26 | EXPORT_SYMBOL(strncpy_from_user); |
33 | EXPORT_SYMBOL(__strncpy_from_user); | 27 | EXPORT_SYMBOL(__strncpy_from_user); |
34 | EXPORT_SYMBOL(clear_user); | 28 | EXPORT_SYMBOL(clear_user); |
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c index ba61c4c73202..e7fee0f198d5 100644 --- a/arch/m32r/kernel/time.c +++ b/arch/m32r/kernel/time.c | |||
@@ -33,6 +33,15 @@ | |||
33 | 33 | ||
34 | #include <asm/hw_irq.h> | 34 | #include <asm/hw_irq.h> |
35 | 35 | ||
36 | #if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) | ||
37 | /* this needs a better home */ | ||
38 | DEFINE_SPINLOCK(rtc_lock); | ||
39 | |||
40 | #ifdef CONFIG_RTC_DRV_CMOS_MODULE | ||
41 | EXPORT_SYMBOL(rtc_lock); | ||
42 | #endif | ||
43 | #endif /* pc-style 'CMOS' RTC support */ | ||
44 | |||
36 | #ifdef CONFIG_SMP | 45 | #ifdef CONFIG_SMP |
37 | extern void smp_local_timer_interrupt(void); | 46 | extern void smp_local_timer_interrupt(void); |
38 | #endif | 47 | #endif |
diff --git a/arch/m32r/kernel/traps.c b/arch/m32r/kernel/traps.c index 03b14e55cd89..fbd109031df3 100644 --- a/arch/m32r/kernel/traps.c +++ b/arch/m32r/kernel/traps.c | |||
@@ -104,8 +104,8 @@ static void set_eit_vector_entries(void) | |||
104 | eit_vector[186] = (unsigned long)smp_call_function_interrupt; | 104 | eit_vector[186] = (unsigned long)smp_call_function_interrupt; |
105 | eit_vector[187] = (unsigned long)smp_ipi_timer_interrupt; | 105 | eit_vector[187] = (unsigned long)smp_ipi_timer_interrupt; |
106 | eit_vector[188] = (unsigned long)smp_flush_cache_all_interrupt; | 106 | eit_vector[188] = (unsigned long)smp_flush_cache_all_interrupt; |
107 | eit_vector[189] = (unsigned long)smp_call_function_single_interrupt; | 107 | eit_vector[189] = 0; /* CPU_BOOT_IPI */ |
108 | eit_vector[190] = 0; | 108 | eit_vector[190] = (unsigned long)smp_call_function_single_interrupt; |
109 | eit_vector[191] = 0; | 109 | eit_vector[191] = 0; |
110 | #endif | 110 | #endif |
111 | _flush_cache_copyback_all(); | 111 | _flush_cache_copyback_all(); |
diff --git a/arch/m32r/lib/delay.c b/arch/m32r/lib/delay.c index ced549be80f5..940f4837e42b 100644 --- a/arch/m32r/lib/delay.c +++ b/arch/m32r/lib/delay.c | |||
@@ -122,4 +122,8 @@ void __ndelay(unsigned long nsecs) | |||
122 | { | 122 | { |
123 | __const_udelay(nsecs * 0x00005); /* 2**32 / 1000000000 (rounded up) */ | 123 | __const_udelay(nsecs * 0x00005); /* 2**32 / 1000000000 (rounded up) */ |
124 | } | 124 | } |
125 | |||
126 | EXPORT_SYMBOL(__delay); | ||
127 | EXPORT_SYMBOL(__const_udelay); | ||
128 | EXPORT_SYMBOL(__udelay); | ||
125 | EXPORT_SYMBOL(__ndelay); | 129 | EXPORT_SYMBOL(__ndelay); |
diff --git a/arch/m32r/mm/discontig.c b/arch/m32r/mm/discontig.c index b7a78ad429b7..5d2858f6eede 100644 --- a/arch/m32r/mm/discontig.c +++ b/arch/m32r/mm/discontig.c | |||
@@ -32,6 +32,9 @@ typedef struct { | |||
32 | } mem_prof_t; | 32 | } mem_prof_t; |
33 | static mem_prof_t mem_prof[MAX_NUMNODES]; | 33 | static mem_prof_t mem_prof[MAX_NUMNODES]; |
34 | 34 | ||
35 | extern unsigned long memory_start; | ||
36 | extern unsigned long memory_end; | ||
37 | |||
35 | static void __init mem_prof_init(void) | 38 | static void __init mem_prof_init(void) |
36 | { | 39 | { |
37 | unsigned long start_pfn, holes, free_pfn; | 40 | unsigned long start_pfn, holes, free_pfn; |
@@ -42,7 +45,7 @@ static void __init mem_prof_init(void) | |||
42 | /* Node#0 SDRAM */ | 45 | /* Node#0 SDRAM */ |
43 | mp = &mem_prof[0]; | 46 | mp = &mem_prof[0]; |
44 | mp->start_pfn = PFN_UP(CONFIG_MEMORY_START); | 47 | mp->start_pfn = PFN_UP(CONFIG_MEMORY_START); |
45 | mp->pages = PFN_DOWN(CONFIG_MEMORY_SIZE); | 48 | mp->pages = PFN_DOWN(memory_end - memory_start); |
46 | mp->holes = 0; | 49 | mp->holes = 0; |
47 | mp->free_pfn = PFN_UP(__pa(_end)); | 50 | mp->free_pfn = PFN_UP(__pa(_end)); |
48 | 51 | ||
diff --git a/arch/m32r/mm/mmu.S b/arch/m32r/mm/mmu.S index 49a6d16a3d58..e9491a5ae827 100644 --- a/arch/m32r/mm/mmu.S +++ b/arch/m32r/mm/mmu.S | |||
@@ -150,9 +150,13 @@ ENTRY(tme_handler) | |||
150 | 150 | ||
151 | ; pmd = pmd_offset(pgd, address); | 151 | ; pmd = pmd_offset(pgd, address); |
152 | ld r3, @r3 ; r3: pmd data | 152 | ld r3, @r3 ; r3: pmd data |
153 | ldi r2, #-4096 | ||
154 | beqz r3, 3f ; pmd_none(*pmd) ? | 153 | beqz r3, 3f ; pmd_none(*pmd) ? |
155 | 154 | ||
155 | and3 r2, r3, #0xfff | ||
156 | add3 r2, r2, #-355 ; _KERNPG_TABLE(=0x163) | ||
157 | bnez r2, 3f ; pmd_bad(*pmd) ? | ||
158 | ldi r2, #-4096 | ||
159 | |||
156 | ; pte = pte_offset(pmd, address); | 160 | ; pte = pte_offset(pmd, address); |
157 | and r2, r3 ; r2: pte base addr | 161 | and r2, r3 ; r2: pte base addr |
158 | srl3 r3, r0, #10 | 162 | srl3 r3, r0, #10 |
@@ -263,9 +267,9 @@ ENTRY(tme_handler) | |||
263 | ld r1, @r3 ; r1: pmd | 267 | ld r1, @r3 ; r1: pmd |
264 | beqz r1, 3f ; pmd_none(*pmd) ? | 268 | beqz r1, 3f ; pmd_none(*pmd) ? |
265 | ; | 269 | ; |
266 | and3 r1, r1, #0xeff | 270 | and3 r1, r1, #0x3ff |
267 | ldi r4, #611 ; _KERNPG_TABLE(=611) | 271 | ldi r4, #0x163 ; _KERNPG_TABLE(=0x163) |
268 | bne r1, r4, 3f ; !pmd_bad(*pmd) ? | 272 | bne r1, r4, 3f ; pmd_bad(*pmd) ? |
269 | 273 | ||
270 | .fillinsn | 274 | .fillinsn |
271 | 4: | 275 | 4: |