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.
This commit is contained in:
Коммит
a4e884a311
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 @@
|
||||||
|
|
||||||
#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)
|
||||||
|
|
||||||
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)
|
||||||
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 @@
|
||||||
*/
|
*/
|
||||||
#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 @@
|
||||||
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 @@
|
||||||
*/
|
*/
|
||||||
#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 @@
|
||||||
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 @@
|
||||||
*/
|
*/
|
||||||
#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 @@
|
||||||
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 @@
|
||||||
*/
|
*/
|
||||||
#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 @@
|
||||||
*/
|
*/
|
||||||
#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 @@
|
||||||
*/
|
*/
|
||||||
#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 = {
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
*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)
|
||||||
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 @@
|
||||||
.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 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.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);
|
||||||
#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,
|
||||||
#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);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче