aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-17 17:47:24 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-17 17:47:24 -0400
commita4e884a311893b476893739901bed382cd62b4fe (patch)
tree7b7b52678b61dfdf8e3a16b0e920d1e9b0cae979
parentce1dc02f76432a46db149241e015a4f782974623 (diff)
parentcc56449f53ba45646c6f0a2edf77c4acb342caed (diff)
Merge with master.kernel.org:/home/rmk/linux-2.6-rmk.git - ARM changes
First ever true git merge. Let's see if it actually works.
-rw-r--r--arch/arm/kernel/process.c15
-rw-r--r--arch/arm/kernel/traps.c8
-rw-r--r--arch/arm/lib/changebit.S11
-rw-r--r--arch/arm/lib/clearbit.S13
-rw-r--r--arch/arm/lib/setbit.S11
-rw-r--r--arch/arm/lib/testchangebit.S15
-rw-r--r--arch/arm/lib/testclearbit.S15
-rw-r--r--arch/arm/lib/testsetbit.S15
-rw-r--r--arch/arm/mach-footbridge/dc21285-timer.c4
-rw-r--r--arch/arm/mach-sa1100/h3600.c2
-rw-r--r--include/asm-arm/arch-ebsa285/debug-macro.S7
-rw-r--r--include/asm-arm/arch-rpc/debug-macro.S5
-rw-r--r--include/asm-arm/ptrace.h5
-rw-r--r--include/asm-arm/system.h3
14 files changed, 41 insertions, 88 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index dbd8ca89b385..26eacd3e5def 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -168,12 +168,11 @@ void machine_restart(char * __unused)
168 168
169EXPORT_SYMBOL(machine_restart); 169EXPORT_SYMBOL(machine_restart);
170 170
171void show_regs(struct pt_regs * regs) 171void __show_regs(struct pt_regs *regs)
172{ 172{
173 unsigned long flags; 173 unsigned long flags = condition_codes(regs);
174
175 flags = condition_codes(regs);
176 174
175 printk("CPU: %d\n", smp_processor_id());
177 print_symbol("PC is at %s\n", instruction_pointer(regs)); 176 print_symbol("PC is at %s\n", instruction_pointer(regs));
178 print_symbol("LR is at %s\n", regs->ARM_lr); 177 print_symbol("LR is at %s\n", regs->ARM_lr);
179 printk("pc : [<%08lx>] lr : [<%08lx>] %s\n" 178 printk("pc : [<%08lx>] lr : [<%08lx>] %s\n"
@@ -213,6 +212,14 @@ void show_regs(struct pt_regs * regs)
213 } 212 }
214} 213}
215 214
215void show_regs(struct pt_regs * regs)
216{
217 printk("\n");
218 printk("Pid: %d, comm: %20s\n", current->pid, current->comm);
219 __show_regs(regs);
220 __backtrace();
221}
222
216void show_fpregs(struct user_fp *regs) 223void show_fpregs(struct user_fp *regs)
217{ 224{
218 int i; 225 int i;
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index 93dc4646cd7f..6e31718f6008 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -31,9 +31,6 @@
31 31
32#include "ptrace.h" 32#include "ptrace.h"
33 33
34extern void c_backtrace (unsigned long fp, int pmode);
35extern void show_pte(struct mm_struct *mm, unsigned long addr);
36
37const char *processor_modes[]= 34const char *processor_modes[]=
38{ "USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" , "UK7_26" , 35{ "USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" , "UK7_26" ,
39 "UK8_26" , "UK9_26" , "UK10_26", "UK11_26", "UK12_26", "UK13_26", "UK14_26", "UK15_26", 36 "UK8_26" , "UK9_26" , "UK10_26", "UK11_26", "UK12_26", "UK13_26", "UK14_26", "UK15_26",
@@ -216,8 +213,7 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
216 213
217 printk("Internal error: %s: %x [#%d]\n", str, err, ++die_counter); 214 printk("Internal error: %s: %x [#%d]\n", str, err, ++die_counter);
218 print_modules(); 215 print_modules();
219 printk("CPU: %d\n", smp_processor_id()); 216 __show_regs(regs);
220 show_regs(regs);
221 printk("Process %s (pid: %d, stack limit = 0x%p)\n", 217 printk("Process %s (pid: %d, stack limit = 0x%p)\n",
222 tsk->comm, tsk->pid, tsk->thread_info + 1); 218 tsk->comm, tsk->pid, tsk->thread_info + 1);
223 219
@@ -482,7 +478,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
482 current->pid, current->comm, no); 478 current->pid, current->comm, no);
483 dump_instr(regs); 479 dump_instr(regs);
484 if (user_mode(regs)) { 480 if (user_mode(regs)) {
485 show_regs(regs); 481 __show_regs(regs);
486 c_backtrace(regs->ARM_fp, processor_mode(regs)); 482 c_backtrace(regs->ARM_fp, processor_mode(regs));
487 } 483 }
488 } 484 }
diff --git a/arch/arm/lib/changebit.S b/arch/arm/lib/changebit.S
index 3af45cab70e1..389567c24090 100644
--- a/arch/arm/lib/changebit.S
+++ b/arch/arm/lib/changebit.S
@@ -9,6 +9,7 @@
9 */ 9 */
10#include <linux/linkage.h> 10#include <linux/linkage.h>
11#include <asm/assembler.h> 11#include <asm/assembler.h>
12#include "bitops.h"
12 .text 13 .text
13 14
14/* Purpose : Function to change a bit 15/* Purpose : Function to change a bit
@@ -17,12 +18,4 @@
17ENTRY(_change_bit_be) 18ENTRY(_change_bit_be)
18 eor r0, r0, #0x18 @ big endian byte ordering 19 eor r0, r0, #0x18 @ big endian byte ordering
19ENTRY(_change_bit_le) 20ENTRY(_change_bit_le)
20 and r2, r0, #7 21 bitop eor
21 mov r3, #1
22 mov r3, r3, lsl r2
23 save_and_disable_irqs ip, r2
24 ldrb r2, [r1, r0, lsr #3]
25 eor r2, r2, r3
26 strb r2, [r1, r0, lsr #3]
27 restore_irqs ip
28 RETINSTR(mov,pc,lr)
diff --git a/arch/arm/lib/clearbit.S b/arch/arm/lib/clearbit.S
index 069a2ce413f0..347516533025 100644
--- a/arch/arm/lib/clearbit.S
+++ b/arch/arm/lib/clearbit.S
@@ -9,6 +9,7 @@
9 */ 9 */
10#include <linux/linkage.h> 10#include <linux/linkage.h>
11#include <asm/assembler.h> 11#include <asm/assembler.h>
12#include "bitops.h"
12 .text 13 .text
13 14
14/* 15/*
@@ -18,14 +19,4 @@
18ENTRY(_clear_bit_be) 19ENTRY(_clear_bit_be)
19 eor r0, r0, #0x18 @ big endian byte ordering 20 eor r0, r0, #0x18 @ big endian byte ordering
20ENTRY(_clear_bit_le) 21ENTRY(_clear_bit_le)
21 and r2, r0, #7 22 bitop bic
22 mov r3, #1
23 mov r3, r3, lsl r2
24 save_and_disable_irqs ip, r2
25 ldrb r2, [r1, r0, lsr #3]
26 bic r2, r2, r3
27 strb r2, [r1, r0, lsr #3]
28 restore_irqs ip
29 RETINSTR(mov,pc,lr)
30
31
diff --git a/arch/arm/lib/setbit.S b/arch/arm/lib/setbit.S
index 8f337df5d99b..83bc23d5b037 100644
--- a/arch/arm/lib/setbit.S
+++ b/arch/arm/lib/setbit.S
@@ -9,6 +9,7 @@
9 */ 9 */
10#include <linux/linkage.h> 10#include <linux/linkage.h>
11#include <asm/assembler.h> 11#include <asm/assembler.h>
12#include "bitops.h"
12 .text 13 .text
13 14
14/* 15/*
@@ -18,12 +19,4 @@
18ENTRY(_set_bit_be) 19ENTRY(_set_bit_be)
19 eor r0, r0, #0x18 @ big endian byte ordering 20 eor r0, r0, #0x18 @ big endian byte ordering
20ENTRY(_set_bit_le) 21ENTRY(_set_bit_le)
21 and r2, r0, #7 22 bitop orr
22 mov r3, #1
23 mov r3, r3, lsl r2
24 save_and_disable_irqs ip, r2
25 ldrb r2, [r1, r0, lsr #3]
26 orr r2, r2, r3
27 strb r2, [r1, r0, lsr #3]
28 restore_irqs ip
29 RETINSTR(mov,pc,lr)
diff --git a/arch/arm/lib/testchangebit.S b/arch/arm/lib/testchangebit.S
index 4aba4676b984..b25dcd2be53e 100644
--- a/arch/arm/lib/testchangebit.S
+++ b/arch/arm/lib/testchangebit.S
@@ -9,21 +9,10 @@
9 */ 9 */
10#include <linux/linkage.h> 10#include <linux/linkage.h>
11#include <asm/assembler.h> 11#include <asm/assembler.h>
12#include "bitops.h"
12 .text 13 .text
13 14
14ENTRY(_test_and_change_bit_be) 15ENTRY(_test_and_change_bit_be)
15 eor r0, r0, #0x18 @ big endian byte ordering 16 eor r0, r0, #0x18 @ big endian byte ordering
16ENTRY(_test_and_change_bit_le) 17ENTRY(_test_and_change_bit_le)
17 add r1, r1, r0, lsr #3 18 testop eor, strb
18 and r3, r0, #7
19 mov r0, #1
20 save_and_disable_irqs ip, r2
21 ldrb r2, [r1]
22 tst r2, r0, lsl r3
23 eor r2, r2, r0, lsl r3
24 strb r2, [r1]
25 restore_irqs ip
26 moveq r0, #0
27 RETINSTR(mov,pc,lr)
28
29
diff --git a/arch/arm/lib/testclearbit.S b/arch/arm/lib/testclearbit.S
index e07c5bd24307..2dcc4b16b68e 100644
--- a/arch/arm/lib/testclearbit.S
+++ b/arch/arm/lib/testclearbit.S
@@ -9,21 +9,10 @@
9 */ 9 */
10#include <linux/linkage.h> 10#include <linux/linkage.h>
11#include <asm/assembler.h> 11#include <asm/assembler.h>
12#include "bitops.h"
12 .text 13 .text
13 14
14ENTRY(_test_and_clear_bit_be) 15ENTRY(_test_and_clear_bit_be)
15 eor r0, r0, #0x18 @ big endian byte ordering 16 eor r0, r0, #0x18 @ big endian byte ordering
16ENTRY(_test_and_clear_bit_le) 17ENTRY(_test_and_clear_bit_le)
17 add r1, r1, r0, lsr #3 @ Get byte offset 18 testop bicne, strneb
18 and r3, r0, #7 @ Get bit offset
19 mov r0, #1
20 save_and_disable_irqs ip, r2
21 ldrb r2, [r1]
22 tst r2, r0, lsl r3
23 bic r2, r2, r0, lsl r3
24 strb r2, [r1]
25 restore_irqs ip
26 moveq r0, #0
27 RETINSTR(mov,pc,lr)
28
29
diff --git a/arch/arm/lib/testsetbit.S b/arch/arm/lib/testsetbit.S
index a570fc74cddd..9011c969761a 100644
--- a/arch/arm/lib/testsetbit.S
+++ b/arch/arm/lib/testsetbit.S
@@ -9,21 +9,10 @@
9 */ 9 */
10#include <linux/linkage.h> 10#include <linux/linkage.h>
11#include <asm/assembler.h> 11#include <asm/assembler.h>
12#include "bitops.h"
12 .text 13 .text
13 14
14ENTRY(_test_and_set_bit_be) 15ENTRY(_test_and_set_bit_be)
15 eor r0, r0, #0x18 @ big endian byte ordering 16 eor r0, r0, #0x18 @ big endian byte ordering
16ENTRY(_test_and_set_bit_le) 17ENTRY(_test_and_set_bit_le)
17 add r1, r1, r0, lsr #3 @ Get byte offset 18 testop orreq, streqb
18 and r3, r0, #7 @ Get bit offset
19 mov r0, #1
20 save_and_disable_irqs ip, r2
21 ldrb r2, [r1]
22 tst r2, r0, lsl r3
23 orr r2, r2, r0, lsl r3
24 strb r2, [r1]
25 restore_irqs ip
26 moveq r0, #0
27 RETINSTR(mov,pc,lr)
28
29
diff --git a/arch/arm/mach-footbridge/dc21285-timer.c b/arch/arm/mach-footbridge/dc21285-timer.c
index 580e1d4bce08..da5b9b7623ca 100644
--- a/arch/arm/mach-footbridge/dc21285-timer.c
+++ b/arch/arm/mach-footbridge/dc21285-timer.c
@@ -51,8 +51,6 @@ static struct irqaction footbridge_timer_irq = {
51 */ 51 */
52static void __init footbridge_timer_init(void) 52static void __init footbridge_timer_init(void)
53{ 53{
54 isa_rtc_init();
55
56 timer1_latch = (mem_fclk_21285 + 8 * HZ) / (16 * HZ); 54 timer1_latch = (mem_fclk_21285 + 8 * HZ) / (16 * HZ);
57 55
58 *CSR_TIMER1_CLR = 0; 56 *CSR_TIMER1_CLR = 0;
@@ -60,6 +58,8 @@ static void __init footbridge_timer_init(void)
60 *CSR_TIMER1_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_AUTORELOAD | TIMER_CNTL_DIV16; 58 *CSR_TIMER1_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_AUTORELOAD | TIMER_CNTL_DIV16;
61 59
62 setup_irq(IRQ_TIMER1, &footbridge_timer_irq); 60 setup_irq(IRQ_TIMER1, &footbridge_timer_irq);
61
62 isa_rtc_init();
63} 63}
64 64
65struct sys_timer footbridge_timer = { 65struct sys_timer footbridge_timer = {
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index 9788d3aefa73..84c86543501a 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -130,7 +130,7 @@ static int h3600_irda_set_power(struct device *dev, unsigned int state)
130 return 0; 130 return 0;
131} 131}
132 132
133static void h3600_irda_set_speed(struct device *dev, int speed) 133static void h3600_irda_set_speed(struct device *dev, unsigned int speed)
134{ 134{
135 if (speed < 4000000) { 135 if (speed < 4000000) {
136 clr_h3600_egpio(IPAQ_EGPIO_IR_FSEL); 136 clr_h3600_egpio(IPAQ_EGPIO_IR_FSEL);
diff --git a/include/asm-arm/arch-ebsa285/debug-macro.S b/include/asm-arm/arch-ebsa285/debug-macro.S
index 237853db6e2f..97d15fc629af 100644
--- a/include/asm-arm/arch-ebsa285/debug-macro.S
+++ b/include/asm-arm/arch-ebsa285/debug-macro.S
@@ -45,9 +45,12 @@
45 .equ dc21285_low, ARMCSR_BASE & 0x00ffffff 45 .equ dc21285_low, ARMCSR_BASE & 0x00ffffff
46 46
47 .macro addruart,rx 47 .macro addruart,rx
48 mov \rx, #dc21285_high 48 mrc p15, 0, \rx, c1, c0
49 tst \rx, #1 @ MMU enabled?
50 moveq \rx, #0x42000000
51 movne \rx, #dc21285_high
49 .if dc21285_low 52 .if dc21285_low
50 orr \rx, \rx, #dc21285_low 53 orrne \rx, \rx, #dc21285_low
51 .endif 54 .endif
52 .endm 55 .endm
53 56
diff --git a/include/asm-arm/arch-rpc/debug-macro.S b/include/asm-arm/arch-rpc/debug-macro.S
index 0711828164cd..456d3d754c3d 100644
--- a/include/asm-arm/arch-rpc/debug-macro.S
+++ b/include/asm-arm/arch-rpc/debug-macro.S
@@ -12,7 +12,10 @@
12*/ 12*/
13 13
14 .macro addruart,rx 14 .macro addruart,rx
15 mov \rx, #0xe0000000 15 mrc p15, 0, \rx, c1, c0
16 tst \rx, #1 @ MMU enabled?
17 moveq \rx, #0x03000000
18 movne \rx, #0xe0000000
16 orr \rx, \rx, #0x00010000 19 orr \rx, \rx, #0x00010000
17 orr \rx, \rx, #0x00000fe0 20 orr \rx, \rx, #0x00000fe0
18 .endm 21 .endm
diff --git a/include/asm-arm/ptrace.h b/include/asm-arm/ptrace.h
index 604e3a186cf9..4377e22b7e1a 100644
--- a/include/asm-arm/ptrace.h
+++ b/include/asm-arm/ptrace.h
@@ -142,11 +142,8 @@ extern unsigned long profile_pc(struct pt_regs *regs);
142#endif 142#endif
143 143
144#ifdef __KERNEL__ 144#ifdef __KERNEL__
145extern void show_regs(struct pt_regs *); 145#define predicate(x) ((x) & 0xf0000000)
146
147#define predicate(x) (x & 0xf0000000)
148#define PREDICATE_ALWAYS 0xe0000000 146#define PREDICATE_ALWAYS 0xe0000000
149
150#endif 147#endif
151 148
152#endif /* __ASSEMBLY__ */ 149#endif /* __ASSEMBLY__ */
diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h
index b5731290b4e5..b13a8da4847b 100644
--- a/include/asm-arm/system.h
+++ b/include/asm-arm/system.h
@@ -99,6 +99,9 @@ void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int,
99#define tas(ptr) (xchg((ptr),1)) 99#define tas(ptr) (xchg((ptr),1))
100 100
101extern asmlinkage void __backtrace(void); 101extern asmlinkage void __backtrace(void);
102extern asmlinkage void c_backtrace(unsigned long fp, int pmode);
103extern void show_pte(struct mm_struct *mm, unsigned long addr);
104extern void __show_regs(struct pt_regs *);
102 105
103extern int cpu_architecture(void); 106extern int cpu_architecture(void);
104 107