aboutsummaryrefslogtreecommitdiffstats
path: root/arch/cris
diff options
context:
space:
mode:
Diffstat (limited to 'arch/cris')
-rw-r--r--arch/cris/Kconfig1
-rw-r--r--arch/cris/arch-v10/kernel/irq.c2
-rw-r--r--arch/cris/arch-v10/kernel/time.c4
-rw-r--r--arch/cris/arch-v10/mm/init.c2
-rw-r--r--arch/cris/arch-v32/kernel/irq.c8
-rw-r--r--arch/cris/arch-v32/kernel/smp.c4
-rw-r--r--arch/cris/arch-v32/kernel/time.c6
-rw-r--r--arch/cris/include/asm/bitops.h3
-rw-r--r--arch/cris/include/asm/thread_info.h2
-rw-r--r--arch/cris/include/asm/types.h9
-rw-r--r--arch/cris/kernel/irq.c39
-rw-r--r--arch/cris/kernel/vmlinux.lds.S7
12 files changed, 17 insertions, 70 deletions
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
index 82985032233a..04a7fc5eaf46 100644
--- a/arch/cris/Kconfig
+++ b/arch/cris/Kconfig
@@ -56,6 +56,7 @@ config CRIS
56 select HAVE_IDE 56 select HAVE_IDE
57 select HAVE_GENERIC_HARDIRQS 57 select HAVE_GENERIC_HARDIRQS
58 select GENERIC_HARDIRQS_NO_DEPRECATED 58 select GENERIC_HARDIRQS_NO_DEPRECATED
59 select GENERIC_IRQ_SHOW
59 60
60config HZ 61config HZ
61 int 62 int
diff --git a/arch/cris/arch-v10/kernel/irq.c b/arch/cris/arch-v10/kernel/irq.c
index 7328a7cf7449..907cfb5a873d 100644
--- a/arch/cris/arch-v10/kernel/irq.c
+++ b/arch/cris/arch-v10/kernel/irq.c
@@ -199,7 +199,7 @@ init_IRQ(void)
199 199
200 /* Initialize IRQ handler descriptors. */ 200 /* Initialize IRQ handler descriptors. */
201 for(i = 2; i < NR_IRQS; i++) { 201 for(i = 2; i < NR_IRQS; i++) {
202 set_irq_desc_and_handler(i, &crisv10_irq_type, 202 irq_set_chip_and_handler(i, &crisv10_irq_type,
203 handle_simple_irq); 203 handle_simple_irq);
204 set_int_vector(i, interrupt[i]); 204 set_int_vector(i, interrupt[i]);
205 } 205 }
diff --git a/arch/cris/arch-v10/kernel/time.c b/arch/cris/arch-v10/kernel/time.c
index 00eb36f8debf..20c85b5dc7d0 100644
--- a/arch/cris/arch-v10/kernel/time.c
+++ b/arch/cris/arch-v10/kernel/time.c
@@ -140,7 +140,7 @@ stop_watchdog(void)
140 140
141/* 141/*
142 * timer_interrupt() needs to keep up the real-time clock, 142 * timer_interrupt() needs to keep up the real-time clock,
143 * as well as call the "do_timer()" routine every clocktick 143 * as well as call the "xtime_update()" routine every clocktick
144 */ 144 */
145 145
146//static unsigned short myjiff; /* used by our debug routine print_timestamp */ 146//static unsigned short myjiff; /* used by our debug routine print_timestamp */
@@ -176,7 +176,7 @@ timer_interrupt(int irq, void *dev_id)
176 176
177 /* call the real timer interrupt handler */ 177 /* call the real timer interrupt handler */
178 178
179 do_timer(1); 179 xtime_update(1);
180 180
181 cris_do_profile(regs); /* Save profiling information */ 181 cris_do_profile(regs); /* Save profiling information */
182 return IRQ_HANDLED; 182 return IRQ_HANDLED;
diff --git a/arch/cris/arch-v10/mm/init.c b/arch/cris/arch-v10/mm/init.c
index baa746ce4e74..e7f8066105aa 100644
--- a/arch/cris/arch-v10/mm/init.c
+++ b/arch/cris/arch-v10/mm/init.c
@@ -241,7 +241,7 @@ flush_etrax_cacherange(void *startadr, int length)
241} 241}
242 242
243/* Due to a bug in Etrax100(LX) all versions, receiving DMA buffers 243/* Due to a bug in Etrax100(LX) all versions, receiving DMA buffers
244 * will occationally corrupt certain CPU writes if the DMA buffers 244 * will occasionally corrupt certain CPU writes if the DMA buffers
245 * happen to be hot in the cache. 245 * happen to be hot in the cache.
246 * 246 *
247 * As a workaround, we have to flush the relevant parts of the cache 247 * As a workaround, we have to flush the relevant parts of the cache
diff --git a/arch/cris/arch-v32/kernel/irq.c b/arch/cris/arch-v32/kernel/irq.c
index 0ad9db5126c7..8023176e19b2 100644
--- a/arch/cris/arch-v32/kernel/irq.c
+++ b/arch/cris/arch-v32/kernel/irq.c
@@ -451,16 +451,16 @@ init_IRQ(void)
451 451
452 /* Point all IRQ's to bad handlers. */ 452 /* Point all IRQ's to bad handlers. */
453 for (i = FIRST_IRQ, j = 0; j < NR_IRQS; i++, j++) { 453 for (i = FIRST_IRQ, j = 0; j < NR_IRQS; i++, j++) {
454 set_irq_chip_and_handler(j, &crisv32_irq_type, 454 irq_set_chip_and_handler(j, &crisv32_irq_type,
455 handle_simple_irq); 455 handle_simple_irq);
456 set_exception_vector(i, interrupt[j]); 456 set_exception_vector(i, interrupt[j]);
457 } 457 }
458 458
459 /* Mark Timer and IPI IRQs as CPU local */ 459 /* Mark Timer and IPI IRQs as CPU local */
460 irq_allocations[TIMER0_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED; 460 irq_allocations[TIMER0_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED;
461 irq_desc[TIMER0_INTR_VECT].status |= IRQ_PER_CPU; 461 irq_set_status_flags(TIMER0_INTR_VECT, IRQ_PER_CPU);
462 irq_allocations[IPI_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED; 462 irq_allocations[IPI_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED;
463 irq_desc[IPI_INTR_VECT].status |= IRQ_PER_CPU; 463 irq_set_status_flags(IPI_INTR_VECT, IRQ_PER_CPU);
464 464
465 set_exception_vector(0x00, nmi_interrupt); 465 set_exception_vector(0x00, nmi_interrupt);
466 set_exception_vector(0x30, multiple_interrupt); 466 set_exception_vector(0x30, multiple_interrupt);
diff --git a/arch/cris/arch-v32/kernel/smp.c b/arch/cris/arch-v32/kernel/smp.c
index 84fed3b4b079..4c9e3e1ba5d1 100644
--- a/arch/cris/arch-v32/kernel/smp.c
+++ b/arch/cris/arch-v32/kernel/smp.c
@@ -26,7 +26,9 @@
26#define FLUSH_ALL (void*)0xffffffff 26#define FLUSH_ALL (void*)0xffffffff
27 27
28/* Vector of locks used for various atomic operations */ 28/* Vector of locks used for various atomic operations */
29spinlock_t cris_atomic_locks[] = { [0 ... LOCK_COUNT - 1] = SPIN_LOCK_UNLOCKED}; 29spinlock_t cris_atomic_locks[] = {
30 [0 ... LOCK_COUNT - 1] = __SPIN_LOCK_UNLOCKED(cris_atomic_locks)
31};
30 32
31/* CPU masks */ 33/* CPU masks */
32cpumask_t phys_cpu_present_map = CPU_MASK_NONE; 34cpumask_t phys_cpu_present_map = CPU_MASK_NONE;
diff --git a/arch/cris/arch-v32/kernel/time.c b/arch/cris/arch-v32/kernel/time.c
index a545211e999d..bb978ede8985 100644
--- a/arch/cris/arch-v32/kernel/time.c
+++ b/arch/cris/arch-v32/kernel/time.c
@@ -183,7 +183,7 @@ void handle_watchdog_bite(struct pt_regs *regs)
183 183
184/* 184/*
185 * timer_interrupt() needs to keep up the real-time clock, 185 * timer_interrupt() needs to keep up the real-time clock,
186 * as well as call the "do_timer()" routine every clocktick. 186 * as well as call the "xtime_update()" routine every clocktick.
187 */ 187 */
188extern void cris_do_profile(struct pt_regs *regs); 188extern void cris_do_profile(struct pt_regs *regs);
189 189
@@ -216,9 +216,7 @@ static inline irqreturn_t timer_interrupt(int irq, void *dev_id)
216 return IRQ_HANDLED; 216 return IRQ_HANDLED;
217 217
218 /* Call the real timer interrupt handler */ 218 /* Call the real timer interrupt handler */
219 write_seqlock(&xtime_lock); 219 xtime_update(1);
220 do_timer(1);
221 write_sequnlock(&xtime_lock);
222 return IRQ_HANDLED; 220 return IRQ_HANDLED;
223} 221}
224 222
diff --git a/arch/cris/include/asm/bitops.h b/arch/cris/include/asm/bitops.h
index 9e69cfb7f134..310e0de67aa6 100644
--- a/arch/cris/include/asm/bitops.h
+++ b/arch/cris/include/asm/bitops.h
@@ -154,12 +154,11 @@ static inline int test_and_change_bit(int nr, volatile unsigned long *addr)
154#include <asm-generic/bitops/find.h> 154#include <asm-generic/bitops/find.h>
155#include <asm-generic/bitops/lock.h> 155#include <asm-generic/bitops/lock.h>
156 156
157#include <asm-generic/bitops/ext2-non-atomic.h> 157#include <asm-generic/bitops/le.h>
158 158
159#define ext2_set_bit_atomic(l,n,a) test_and_set_bit(n,a) 159#define ext2_set_bit_atomic(l,n,a) test_and_set_bit(n,a)
160#define ext2_clear_bit_atomic(l,n,a) test_and_clear_bit(n,a) 160#define ext2_clear_bit_atomic(l,n,a) test_and_clear_bit(n,a)
161 161
162#include <asm-generic/bitops/minix.h>
163#include <asm-generic/bitops/sched.h> 162#include <asm-generic/bitops/sched.h>
164 163
165#endif /* __KERNEL__ */ 164#endif /* __KERNEL__ */
diff --git a/arch/cris/include/asm/thread_info.h b/arch/cris/include/asm/thread_info.h
index 91776069ca80..29b74a105830 100644
--- a/arch/cris/include/asm/thread_info.h
+++ b/arch/cris/include/asm/thread_info.h
@@ -68,7 +68,7 @@ struct thread_info {
68#define init_thread_info (init_thread_union.thread_info) 68#define init_thread_info (init_thread_union.thread_info)
69 69
70/* thread information allocation */ 70/* thread information allocation */
71#define alloc_thread_info(tsk) ((struct thread_info *) __get_free_pages(GFP_KERNEL,1)) 71#define alloc_thread_info(tsk, node) ((struct thread_info *) __get_free_pages(GFP_KERNEL,1))
72#define free_thread_info(ti) free_pages((unsigned long) (ti), 1) 72#define free_thread_info(ti) free_pages((unsigned long) (ti), 1)
73 73
74#endif /* !__ASSEMBLY__ */ 74#endif /* !__ASSEMBLY__ */
diff --git a/arch/cris/include/asm/types.h b/arch/cris/include/asm/types.h
index 5790262cbe8a..551a12c0aa01 100644
--- a/arch/cris/include/asm/types.h
+++ b/arch/cris/include/asm/types.h
@@ -16,15 +16,6 @@ typedef unsigned short umode_t;
16 16
17#define BITS_PER_LONG 32 17#define BITS_PER_LONG 32
18 18
19#ifndef __ASSEMBLY__
20
21/* Dma addresses are 32-bits wide, just like our other addresses. */
22
23typedef u32 dma_addr_t;
24typedef u32 dma64_addr_t;
25
26#endif /* __ASSEMBLY__ */
27
28#endif /* __KERNEL__ */ 19#endif /* __KERNEL__ */
29 20
30#endif 21#endif
diff --git a/arch/cris/kernel/irq.c b/arch/cris/kernel/irq.c
index c346952f06dc..788eb2248916 100644
--- a/arch/cris/kernel/irq.c
+++ b/arch/cris/kernel/irq.c
@@ -37,45 +37,6 @@
37 37
38#include <asm/io.h> 38#include <asm/io.h>
39 39
40int show_interrupts(struct seq_file *p, void *v)
41{
42 int i = *(loff_t *) v, j;
43 struct irqaction * action;
44 unsigned long flags;
45
46 if (i == 0) {
47 seq_printf(p, " ");
48 for_each_online_cpu(j)
49 seq_printf(p, "CPU%d ",j);
50 seq_putc(p, '\n');
51 }
52
53 if (i < NR_IRQS) {
54 raw_spin_lock_irqsave(&irq_desc[i].lock, flags);
55 action = irq_desc[i].action;
56 if (!action)
57 goto skip;
58 seq_printf(p, "%3d: ",i);
59#ifndef CONFIG_SMP
60 seq_printf(p, "%10u ", kstat_irqs(i));
61#else
62 for_each_online_cpu(j)
63 seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
64#endif
65 seq_printf(p, " %14s", irq_desc[i].irq_data.chip->name);
66 seq_printf(p, " %s", action->name);
67
68 for (action=action->next; action; action = action->next)
69 seq_printf(p, ", %s", action->name);
70
71 seq_putc(p, '\n');
72skip:
73 raw_spin_unlock_irqrestore(&irq_desc[i].lock, flags);
74 }
75 return 0;
76}
77
78
79/* called by the assembler IRQ entry functions defined in irq.h 40/* called by the assembler IRQ entry functions defined in irq.h
80 * to dispatch the interrupts to registered handlers 41 * to dispatch the interrupts to registered handlers
81 * interrupts are disabled upon entry - depending on if the 42 * interrupts are disabled upon entry - depending on if the
diff --git a/arch/cris/kernel/vmlinux.lds.S b/arch/cris/kernel/vmlinux.lds.S
index 442218980db0..728bbd9e7d4c 100644
--- a/arch/cris/kernel/vmlinux.lds.S
+++ b/arch/cris/kernel/vmlinux.lds.S
@@ -72,11 +72,6 @@ SECTIONS
72 INIT_TEXT_SECTION(PAGE_SIZE) 72 INIT_TEXT_SECTION(PAGE_SIZE)
73 .init.data : { INIT_DATA } 73 .init.data : { INIT_DATA }
74 .init.setup : { INIT_SETUP(16) } 74 .init.setup : { INIT_SETUP(16) }
75#ifdef CONFIG_ETRAX_ARCH_V32
76 __start___param = .;
77 __param : { *(__param) }
78 __stop___param = .;
79#endif
80 .initcall.init : { 75 .initcall.init : {
81 INIT_CALLS 76 INIT_CALLS
82 } 77 }
@@ -107,7 +102,7 @@ SECTIONS
107#endif 102#endif
108 __vmlinux_end = .; /* Last address of the physical file. */ 103 __vmlinux_end = .; /* Last address of the physical file. */
109#ifdef CONFIG_ETRAX_ARCH_V32 104#ifdef CONFIG_ETRAX_ARCH_V32
110 PERCPU(PAGE_SIZE) 105 PERCPU(32, PAGE_SIZE)
111 106
112 .init.ramfs : { 107 .init.ramfs : {
113 INIT_RAM_FS 108 INIT_RAM_FS