提交 a4e884a3 编写于 作者: L Linus Torvalds

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.
...@@ -168,12 +168,11 @@ void machine_restart(char * __unused) ...@@ -168,12 +168,11 @@ void machine_restart(char * __unused)
EXPORT_SYMBOL(machine_restart); EXPORT_SYMBOL(machine_restart);
void show_regs(struct pt_regs * regs) void __show_regs(struct pt_regs *regs)
{ {
unsigned long flags; unsigned long flags = condition_codes(regs);
flags = condition_codes(regs);
printk("CPU: %d\n", smp_processor_id());
print_symbol("PC is at %s\n", instruction_pointer(regs)); print_symbol("PC is at %s\n", instruction_pointer(regs));
print_symbol("LR is at %s\n", regs->ARM_lr); print_symbol("LR is at %s\n", regs->ARM_lr);
printk("pc : [<%08lx>] lr : [<%08lx>] %s\n" printk("pc : [<%08lx>] lr : [<%08lx>] %s\n"
...@@ -213,6 +212,14 @@ void show_regs(struct pt_regs * regs) ...@@ -213,6 +212,14 @@ void show_regs(struct pt_regs * regs)
} }
} }
void show_regs(struct pt_regs * regs)
{
printk("\n");
printk("Pid: %d, comm: %20s\n", current->pid, current->comm);
__show_regs(regs);
__backtrace();
}
void show_fpregs(struct user_fp *regs) void show_fpregs(struct user_fp *regs)
{ {
int i; int i;
......
...@@ -31,9 +31,6 @@ ...@@ -31,9 +31,6 @@
#include "ptrace.h" #include "ptrace.h"
extern void c_backtrace (unsigned long fp, int pmode);
extern void show_pte(struct mm_struct *mm, unsigned long addr);
const char *processor_modes[]= const char *processor_modes[]=
{ "USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" , "UK7_26" , { "USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" , "UK7_26" ,
"UK8_26" , "UK9_26" , "UK10_26", "UK11_26", "UK12_26", "UK13_26", "UK14_26", "UK15_26", "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,8 +213,7 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
printk("Internal error: %s: %x [#%d]\n", str, err, ++die_counter); printk("Internal error: %s: %x [#%d]\n", str, err, ++die_counter);
print_modules(); print_modules();
printk("CPU: %d\n", smp_processor_id()); __show_regs(regs);
show_regs(regs);
printk("Process %s (pid: %d, stack limit = 0x%p)\n", printk("Process %s (pid: %d, stack limit = 0x%p)\n",
tsk->comm, tsk->pid, tsk->thread_info + 1); tsk->comm, tsk->pid, tsk->thread_info + 1);
...@@ -482,7 +478,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) ...@@ -482,7 +478,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
current->pid, current->comm, no); current->pid, current->comm, no);
dump_instr(regs); dump_instr(regs);
if (user_mode(regs)) { if (user_mode(regs)) {
show_regs(regs); __show_regs(regs);
c_backtrace(regs->ARM_fp, processor_mode(regs)); c_backtrace(regs->ARM_fp, processor_mode(regs));
} }
} }
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include "bitops.h"
.text .text
/* Purpose : Function to change a bit /* Purpose : Function to change a bit
...@@ -17,12 +18,4 @@ ...@@ -17,12 +18,4 @@
ENTRY(_change_bit_be) ENTRY(_change_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_change_bit_le) ENTRY(_change_bit_le)
and r2, r0, #7 bitop eor
mov r3, #1
mov r3, r3, lsl r2
save_and_disable_irqs ip, r2
ldrb r2, [r1, r0, lsr #3]
eor r2, r2, r3
strb r2, [r1, r0, lsr #3]
restore_irqs ip
RETINSTR(mov,pc,lr)
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include "bitops.h"
.text .text
/* /*
...@@ -18,14 +19,4 @@ ...@@ -18,14 +19,4 @@
ENTRY(_clear_bit_be) ENTRY(_clear_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_clear_bit_le) ENTRY(_clear_bit_le)
and r2, r0, #7 bitop bic
mov r3, #1
mov r3, r3, lsl r2
save_and_disable_irqs ip, r2
ldrb r2, [r1, r0, lsr #3]
bic r2, r2, r3
strb r2, [r1, r0, lsr #3]
restore_irqs ip
RETINSTR(mov,pc,lr)
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include "bitops.h"
.text .text
/* /*
...@@ -18,12 +19,4 @@ ...@@ -18,12 +19,4 @@
ENTRY(_set_bit_be) ENTRY(_set_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_set_bit_le) ENTRY(_set_bit_le)
and r2, r0, #7 bitop orr
mov r3, #1
mov r3, r3, lsl r2
save_and_disable_irqs ip, r2
ldrb r2, [r1, r0, lsr #3]
orr r2, r2, r3
strb r2, [r1, r0, lsr #3]
restore_irqs ip
RETINSTR(mov,pc,lr)
...@@ -9,21 +9,10 @@ ...@@ -9,21 +9,10 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include "bitops.h"
.text .text
ENTRY(_test_and_change_bit_be) ENTRY(_test_and_change_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_test_and_change_bit_le) ENTRY(_test_and_change_bit_le)
add r1, r1, r0, lsr #3 testop eor, strb
and r3, r0, #7
mov r0, #1
save_and_disable_irqs ip, r2
ldrb r2, [r1]
tst r2, r0, lsl r3
eor r2, r2, r0, lsl r3
strb r2, [r1]
restore_irqs ip
moveq r0, #0
RETINSTR(mov,pc,lr)
...@@ -9,21 +9,10 @@ ...@@ -9,21 +9,10 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include "bitops.h"
.text .text
ENTRY(_test_and_clear_bit_be) ENTRY(_test_and_clear_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_test_and_clear_bit_le) ENTRY(_test_and_clear_bit_le)
add r1, r1, r0, lsr #3 @ Get byte offset testop bicne, strneb
and r3, r0, #7 @ Get bit offset
mov r0, #1
save_and_disable_irqs ip, r2
ldrb r2, [r1]
tst r2, r0, lsl r3
bic r2, r2, r0, lsl r3
strb r2, [r1]
restore_irqs ip
moveq r0, #0
RETINSTR(mov,pc,lr)
...@@ -9,21 +9,10 @@ ...@@ -9,21 +9,10 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include "bitops.h"
.text .text
ENTRY(_test_and_set_bit_be) ENTRY(_test_and_set_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_test_and_set_bit_le) ENTRY(_test_and_set_bit_le)
add r1, r1, r0, lsr #3 @ Get byte offset testop orreq, streqb
and r3, r0, #7 @ Get bit offset
mov r0, #1
save_and_disable_irqs ip, r2
ldrb r2, [r1]
tst r2, r0, lsl r3
orr r2, r2, r0, lsl r3
strb r2, [r1]
restore_irqs ip
moveq r0, #0
RETINSTR(mov,pc,lr)
...@@ -51,8 +51,6 @@ static struct irqaction footbridge_timer_irq = { ...@@ -51,8 +51,6 @@ static struct irqaction footbridge_timer_irq = {
*/ */
static void __init footbridge_timer_init(void) static void __init footbridge_timer_init(void)
{ {
isa_rtc_init();
timer1_latch = (mem_fclk_21285 + 8 * HZ) / (16 * HZ); timer1_latch = (mem_fclk_21285 + 8 * HZ) / (16 * HZ);
*CSR_TIMER1_CLR = 0; *CSR_TIMER1_CLR = 0;
...@@ -60,6 +58,8 @@ static void __init footbridge_timer_init(void) ...@@ -60,6 +58,8 @@ static void __init footbridge_timer_init(void)
*CSR_TIMER1_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_AUTORELOAD | TIMER_CNTL_DIV16; *CSR_TIMER1_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_AUTORELOAD | TIMER_CNTL_DIV16;
setup_irq(IRQ_TIMER1, &footbridge_timer_irq); setup_irq(IRQ_TIMER1, &footbridge_timer_irq);
isa_rtc_init();
} }
struct sys_timer footbridge_timer = { struct sys_timer footbridge_timer = {
......
...@@ -130,7 +130,7 @@ static int h3600_irda_set_power(struct device *dev, unsigned int state) ...@@ -130,7 +130,7 @@ static int h3600_irda_set_power(struct device *dev, unsigned int state)
return 0; return 0;
} }
static void h3600_irda_set_speed(struct device *dev, int speed) static void h3600_irda_set_speed(struct device *dev, unsigned int speed)
{ {
if (speed < 4000000) { if (speed < 4000000) {
clr_h3600_egpio(IPAQ_EGPIO_IR_FSEL); clr_h3600_egpio(IPAQ_EGPIO_IR_FSEL);
......
...@@ -45,9 +45,12 @@ ...@@ -45,9 +45,12 @@
.equ dc21285_low, ARMCSR_BASE & 0x00ffffff .equ dc21285_low, ARMCSR_BASE & 0x00ffffff
.macro addruart,rx .macro addruart,rx
mov \rx, #dc21285_high mrc p15, 0, \rx, c1, c0
tst \rx, #1 @ MMU enabled?
moveq \rx, #0x42000000
movne \rx, #dc21285_high
.if dc21285_low .if dc21285_low
orr \rx, \rx, #dc21285_low orrne \rx, \rx, #dc21285_low
.endif .endif
.endm .endm
......
...@@ -12,7 +12,10 @@ ...@@ -12,7 +12,10 @@
*/ */
.macro addruart,rx .macro addruart,rx
mov \rx, #0xe0000000 mrc p15, 0, \rx, c1, c0
tst \rx, #1 @ MMU enabled?
moveq \rx, #0x03000000
movne \rx, #0xe0000000
orr \rx, \rx, #0x00010000 orr \rx, \rx, #0x00010000
orr \rx, \rx, #0x00000fe0 orr \rx, \rx, #0x00000fe0
.endm .endm
......
...@@ -142,11 +142,8 @@ extern unsigned long profile_pc(struct pt_regs *regs); ...@@ -142,11 +142,8 @@ extern unsigned long profile_pc(struct pt_regs *regs);
#endif #endif
#ifdef __KERNEL__ #ifdef __KERNEL__
extern void show_regs(struct pt_regs *); #define predicate(x) ((x) & 0xf0000000)
#define predicate(x) (x & 0xf0000000)
#define PREDICATE_ALWAYS 0xe0000000 #define PREDICATE_ALWAYS 0xe0000000
#endif #endif
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
......
...@@ -99,6 +99,9 @@ void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, ...@@ -99,6 +99,9 @@ void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int,
#define tas(ptr) (xchg((ptr),1)) #define tas(ptr) (xchg((ptr),1))
extern asmlinkage void __backtrace(void); extern asmlinkage void __backtrace(void);
extern asmlinkage void c_backtrace(unsigned long fp, int pmode);
extern void show_pte(struct mm_struct *mm, unsigned long addr);
extern void __show_regs(struct pt_regs *);
extern int cpu_architecture(void); extern int cpu_architecture(void);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册