Commit 2f7989ef authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm:
  ARM: 6226/1: fix kprobe bug in ldr instruction emulation
  ARM: Update mach-types
  ARM: lockdep: fix unannotated irqs-on
  ARM: 6184/2: ux500: use neutral PRCMU base
  ARM: 6212/1: atomic ops: add memory constraints to inline asm
  ARM: 6211/1: atomic ops: fix register constraints for atomic64_add_unless
  ARM: 6210/1: Do not rely on reset defaults of L2X0_AUX_CTRL
parents 6f7dd68b 0ebe25f9
...@@ -40,12 +40,12 @@ static inline void atomic_add(int i, atomic_t *v) ...@@ -40,12 +40,12 @@ static inline void atomic_add(int i, atomic_t *v)
int result; int result;
__asm__ __volatile__("@ atomic_add\n" __asm__ __volatile__("@ atomic_add\n"
"1: ldrex %0, [%2]\n" "1: ldrex %0, [%3]\n"
" add %0, %0, %3\n" " add %0, %0, %4\n"
" strex %1, %0, [%2]\n" " strex %1, %0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter), "Ir" (i) : "r" (&v->counter), "Ir" (i)
: "cc"); : "cc");
} }
...@@ -58,12 +58,12 @@ static inline int atomic_add_return(int i, atomic_t *v) ...@@ -58,12 +58,12 @@ static inline int atomic_add_return(int i, atomic_t *v)
smp_mb(); smp_mb();
__asm__ __volatile__("@ atomic_add_return\n" __asm__ __volatile__("@ atomic_add_return\n"
"1: ldrex %0, [%2]\n" "1: ldrex %0, [%3]\n"
" add %0, %0, %3\n" " add %0, %0, %4\n"
" strex %1, %0, [%2]\n" " strex %1, %0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter), "Ir" (i) : "r" (&v->counter), "Ir" (i)
: "cc"); : "cc");
...@@ -78,12 +78,12 @@ static inline void atomic_sub(int i, atomic_t *v) ...@@ -78,12 +78,12 @@ static inline void atomic_sub(int i, atomic_t *v)
int result; int result;
__asm__ __volatile__("@ atomic_sub\n" __asm__ __volatile__("@ atomic_sub\n"
"1: ldrex %0, [%2]\n" "1: ldrex %0, [%3]\n"
" sub %0, %0, %3\n" " sub %0, %0, %4\n"
" strex %1, %0, [%2]\n" " strex %1, %0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter), "Ir" (i) : "r" (&v->counter), "Ir" (i)
: "cc"); : "cc");
} }
...@@ -96,12 +96,12 @@ static inline int atomic_sub_return(int i, atomic_t *v) ...@@ -96,12 +96,12 @@ static inline int atomic_sub_return(int i, atomic_t *v)
smp_mb(); smp_mb();
__asm__ __volatile__("@ atomic_sub_return\n" __asm__ __volatile__("@ atomic_sub_return\n"
"1: ldrex %0, [%2]\n" "1: ldrex %0, [%3]\n"
" sub %0, %0, %3\n" " sub %0, %0, %4\n"
" strex %1, %0, [%2]\n" " strex %1, %0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter), "Ir" (i) : "r" (&v->counter), "Ir" (i)
: "cc"); : "cc");
...@@ -118,11 +118,11 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new) ...@@ -118,11 +118,11 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
do { do {
__asm__ __volatile__("@ atomic_cmpxchg\n" __asm__ __volatile__("@ atomic_cmpxchg\n"
"ldrex %1, [%2]\n" "ldrex %1, [%3]\n"
"mov %0, #0\n" "mov %0, #0\n"
"teq %1, %3\n" "teq %1, %4\n"
"strexeq %0, %4, [%2]\n" "strexeq %0, %5, [%3]\n"
: "=&r" (res), "=&r" (oldval) : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter)
: "r" (&ptr->counter), "Ir" (old), "r" (new) : "r" (&ptr->counter), "Ir" (old), "r" (new)
: "cc"); : "cc");
} while (res); } while (res);
...@@ -137,12 +137,12 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr) ...@@ -137,12 +137,12 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
unsigned long tmp, tmp2; unsigned long tmp, tmp2;
__asm__ __volatile__("@ atomic_clear_mask\n" __asm__ __volatile__("@ atomic_clear_mask\n"
"1: ldrex %0, [%2]\n" "1: ldrex %0, [%3]\n"
" bic %0, %0, %3\n" " bic %0, %0, %4\n"
" strex %1, %0, [%2]\n" " strex %1, %0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (tmp), "=&r" (tmp2) : "=&r" (tmp), "=&r" (tmp2), "+Qo" (*addr)
: "r" (addr), "Ir" (mask) : "r" (addr), "Ir" (mask)
: "cc"); : "cc");
} }
...@@ -249,7 +249,7 @@ static inline u64 atomic64_read(atomic64_t *v) ...@@ -249,7 +249,7 @@ static inline u64 atomic64_read(atomic64_t *v)
__asm__ __volatile__("@ atomic64_read\n" __asm__ __volatile__("@ atomic64_read\n"
" ldrexd %0, %H0, [%1]" " ldrexd %0, %H0, [%1]"
: "=&r" (result) : "=&r" (result)
: "r" (&v->counter) : "r" (&v->counter), "Qo" (v->counter)
); );
return result; return result;
...@@ -260,11 +260,11 @@ static inline void atomic64_set(atomic64_t *v, u64 i) ...@@ -260,11 +260,11 @@ static inline void atomic64_set(atomic64_t *v, u64 i)
u64 tmp; u64 tmp;
__asm__ __volatile__("@ atomic64_set\n" __asm__ __volatile__("@ atomic64_set\n"
"1: ldrexd %0, %H0, [%1]\n" "1: ldrexd %0, %H0, [%2]\n"
" strexd %0, %2, %H2, [%1]\n" " strexd %0, %3, %H3, [%2]\n"
" teq %0, #0\n" " teq %0, #0\n"
" bne 1b" " bne 1b"
: "=&r" (tmp) : "=&r" (tmp), "=Qo" (v->counter)
: "r" (&v->counter), "r" (i) : "r" (&v->counter), "r" (i)
: "cc"); : "cc");
} }
...@@ -275,13 +275,13 @@ static inline void atomic64_add(u64 i, atomic64_t *v) ...@@ -275,13 +275,13 @@ static inline void atomic64_add(u64 i, atomic64_t *v)
unsigned long tmp; unsigned long tmp;
__asm__ __volatile__("@ atomic64_add\n" __asm__ __volatile__("@ atomic64_add\n"
"1: ldrexd %0, %H0, [%2]\n" "1: ldrexd %0, %H0, [%3]\n"
" adds %0, %0, %3\n" " adds %0, %0, %4\n"
" adc %H0, %H0, %H3\n" " adc %H0, %H0, %H4\n"
" strexd %1, %0, %H0, [%2]\n" " strexd %1, %0, %H0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter), "r" (i) : "r" (&v->counter), "r" (i)
: "cc"); : "cc");
} }
...@@ -294,13 +294,13 @@ static inline u64 atomic64_add_return(u64 i, atomic64_t *v) ...@@ -294,13 +294,13 @@ static inline u64 atomic64_add_return(u64 i, atomic64_t *v)
smp_mb(); smp_mb();
__asm__ __volatile__("@ atomic64_add_return\n" __asm__ __volatile__("@ atomic64_add_return\n"
"1: ldrexd %0, %H0, [%2]\n" "1: ldrexd %0, %H0, [%3]\n"
" adds %0, %0, %3\n" " adds %0, %0, %4\n"
" adc %H0, %H0, %H3\n" " adc %H0, %H0, %H4\n"
" strexd %1, %0, %H0, [%2]\n" " strexd %1, %0, %H0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter), "r" (i) : "r" (&v->counter), "r" (i)
: "cc"); : "cc");
...@@ -315,13 +315,13 @@ static inline void atomic64_sub(u64 i, atomic64_t *v) ...@@ -315,13 +315,13 @@ static inline void atomic64_sub(u64 i, atomic64_t *v)
unsigned long tmp; unsigned long tmp;
__asm__ __volatile__("@ atomic64_sub\n" __asm__ __volatile__("@ atomic64_sub\n"
"1: ldrexd %0, %H0, [%2]\n" "1: ldrexd %0, %H0, [%3]\n"
" subs %0, %0, %3\n" " subs %0, %0, %4\n"
" sbc %H0, %H0, %H3\n" " sbc %H0, %H0, %H4\n"
" strexd %1, %0, %H0, [%2]\n" " strexd %1, %0, %H0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter), "r" (i) : "r" (&v->counter), "r" (i)
: "cc"); : "cc");
} }
...@@ -334,13 +334,13 @@ static inline u64 atomic64_sub_return(u64 i, atomic64_t *v) ...@@ -334,13 +334,13 @@ static inline u64 atomic64_sub_return(u64 i, atomic64_t *v)
smp_mb(); smp_mb();
__asm__ __volatile__("@ atomic64_sub_return\n" __asm__ __volatile__("@ atomic64_sub_return\n"
"1: ldrexd %0, %H0, [%2]\n" "1: ldrexd %0, %H0, [%3]\n"
" subs %0, %0, %3\n" " subs %0, %0, %4\n"
" sbc %H0, %H0, %H3\n" " sbc %H0, %H0, %H4\n"
" strexd %1, %0, %H0, [%2]\n" " strexd %1, %0, %H0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter), "r" (i) : "r" (&v->counter), "r" (i)
: "cc"); : "cc");
...@@ -358,12 +358,12 @@ static inline u64 atomic64_cmpxchg(atomic64_t *ptr, u64 old, u64 new) ...@@ -358,12 +358,12 @@ static inline u64 atomic64_cmpxchg(atomic64_t *ptr, u64 old, u64 new)
do { do {
__asm__ __volatile__("@ atomic64_cmpxchg\n" __asm__ __volatile__("@ atomic64_cmpxchg\n"
"ldrexd %1, %H1, [%2]\n" "ldrexd %1, %H1, [%3]\n"
"mov %0, #0\n" "mov %0, #0\n"
"teq %1, %3\n" "teq %1, %4\n"
"teqeq %H1, %H3\n" "teqeq %H1, %H4\n"
"strexdeq %0, %4, %H4, [%2]" "strexdeq %0, %5, %H5, [%3]"
: "=&r" (res), "=&r" (oldval) : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter)
: "r" (&ptr->counter), "r" (old), "r" (new) : "r" (&ptr->counter), "r" (old), "r" (new)
: "cc"); : "cc");
} while (res); } while (res);
...@@ -381,11 +381,11 @@ static inline u64 atomic64_xchg(atomic64_t *ptr, u64 new) ...@@ -381,11 +381,11 @@ static inline u64 atomic64_xchg(atomic64_t *ptr, u64 new)
smp_mb(); smp_mb();
__asm__ __volatile__("@ atomic64_xchg\n" __asm__ __volatile__("@ atomic64_xchg\n"
"1: ldrexd %0, %H0, [%2]\n" "1: ldrexd %0, %H0, [%3]\n"
" strexd %1, %3, %H3, [%2]\n" " strexd %1, %4, %H4, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b" " bne 1b"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (ptr->counter)
: "r" (&ptr->counter), "r" (new) : "r" (&ptr->counter), "r" (new)
: "cc"); : "cc");
...@@ -402,16 +402,16 @@ static inline u64 atomic64_dec_if_positive(atomic64_t *v) ...@@ -402,16 +402,16 @@ static inline u64 atomic64_dec_if_positive(atomic64_t *v)
smp_mb(); smp_mb();
__asm__ __volatile__("@ atomic64_dec_if_positive\n" __asm__ __volatile__("@ atomic64_dec_if_positive\n"
"1: ldrexd %0, %H0, [%2]\n" "1: ldrexd %0, %H0, [%3]\n"
" subs %0, %0, #1\n" " subs %0, %0, #1\n"
" sbc %H0, %H0, #0\n" " sbc %H0, %H0, #0\n"
" teq %H0, #0\n" " teq %H0, #0\n"
" bmi 2f\n" " bmi 2f\n"
" strexd %1, %0, %H0, [%2]\n" " strexd %1, %0, %H0, [%3]\n"
" teq %1, #0\n" " teq %1, #0\n"
" bne 1b\n" " bne 1b\n"
"2:" "2:"
: "=&r" (result), "=&r" (tmp) : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter) : "r" (&v->counter)
: "cc"); : "cc");
...@@ -429,18 +429,18 @@ static inline int atomic64_add_unless(atomic64_t *v, u64 a, u64 u) ...@@ -429,18 +429,18 @@ static inline int atomic64_add_unless(atomic64_t *v, u64 a, u64 u)
smp_mb(); smp_mb();
__asm__ __volatile__("@ atomic64_add_unless\n" __asm__ __volatile__("@ atomic64_add_unless\n"
"1: ldrexd %0, %H0, [%3]\n" "1: ldrexd %0, %H0, [%4]\n"
" teq %0, %4\n" " teq %0, %5\n"
" teqeq %H0, %H4\n" " teqeq %H0, %H5\n"
" moveq %1, #0\n" " moveq %1, #0\n"
" beq 2f\n" " beq 2f\n"
" adds %0, %0, %5\n" " adds %0, %0, %6\n"
" adc %H0, %H0, %H5\n" " adc %H0, %H0, %H6\n"
" strexd %2, %0, %H0, [%3]\n" " strexd %2, %0, %H0, [%4]\n"
" teq %2, #0\n" " teq %2, #0\n"
" bne 1b\n" " bne 1b\n"
"2:" "2:"
: "=&r" (val), "=&r" (ret), "=&r" (tmp) : "=&r" (val), "+r" (ret), "=&r" (tmp), "+Qo" (v->counter)
: "r" (&v->counter), "r" (u), "r" (a) : "r" (&v->counter), "r" (u), "r" (a)
: "cc"); : "cc");
......
...@@ -162,8 +162,6 @@ ENDPROC(__und_invalid) ...@@ -162,8 +162,6 @@ ENDPROC(__und_invalid)
@ r4 - orig_r0 (see pt_regs definition in ptrace.h) @ r4 - orig_r0 (see pt_regs definition in ptrace.h)
@ @
stmia r5, {r0 - r4} stmia r5, {r0 - r4}
asm_trace_hardirqs_off
.endm .endm
.align 5 .align 5
...@@ -204,7 +202,7 @@ __dabt_svc: ...@@ -204,7 +202,7 @@ __dabt_svc:
@ @
@ IRQs off again before pulling preserved data off the stack @ IRQs off again before pulling preserved data off the stack
@ @
disable_irq disable_irq_notrace
@ @
@ restore SPSR and restart the instruction @ restore SPSR and restart the instruction
...@@ -218,6 +216,9 @@ ENDPROC(__dabt_svc) ...@@ -218,6 +216,9 @@ ENDPROC(__dabt_svc)
__irq_svc: __irq_svc:
svc_entry svc_entry
#ifdef CONFIG_TRACE_IRQFLAGS
bl trace_hardirqs_off
#endif
#ifdef CONFIG_PREEMPT #ifdef CONFIG_PREEMPT
get_thread_info tsk get_thread_info tsk
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
...@@ -291,7 +292,7 @@ __und_svc: ...@@ -291,7 +292,7 @@ __und_svc:
@ @
@ IRQs off again before pulling preserved data off the stack @ IRQs off again before pulling preserved data off the stack
@ @
1: disable_irq 1: disable_irq_notrace
@ @
@ restore SPSR and restart the instruction @ restore SPSR and restart the instruction
...@@ -327,7 +328,7 @@ __pabt_svc: ...@@ -327,7 +328,7 @@ __pabt_svc:
@ @
@ IRQs off again before pulling preserved data off the stack @ IRQs off again before pulling preserved data off the stack
@ @
disable_irq disable_irq_notrace
@ @
@ restore SPSR and restart the instruction @ restore SPSR and restart the instruction
...@@ -393,8 +394,6 @@ ENDPROC(__pabt_svc) ...@@ -393,8 +394,6 @@ ENDPROC(__pabt_svc)
@ Clear FP to mark the first stack frame @ Clear FP to mark the first stack frame
@ @
zero_fp zero_fp
asm_trace_hardirqs_off
.endm .endm
.macro kuser_cmpxchg_check .macro kuser_cmpxchg_check
...@@ -465,9 +464,6 @@ __irq_usr: ...@@ -465,9 +464,6 @@ __irq_usr:
THUMB( movne r0, #0 ) THUMB( movne r0, #0 )
THUMB( strne r0, [r0] ) THUMB( strne r0, [r0] )
#endif #endif
#ifdef CONFIG_TRACE_IRQFLAGS
bl trace_hardirqs_on
#endif
mov why, #0 mov why, #0
b ret_to_user b ret_to_user
......
...@@ -583,13 +583,14 @@ static void __kprobes emulate_ldr(struct kprobe *p, struct pt_regs *regs) ...@@ -583,13 +583,14 @@ static void __kprobes emulate_ldr(struct kprobe *p, struct pt_regs *regs)
{ {
insn_llret_3arg_fn_t *i_fn = (insn_llret_3arg_fn_t *)&p->ainsn.insn[0]; insn_llret_3arg_fn_t *i_fn = (insn_llret_3arg_fn_t *)&p->ainsn.insn[0];
kprobe_opcode_t insn = p->opcode; kprobe_opcode_t insn = p->opcode;
long ppc = (long)p->addr + 8;
union reg_pair fnr; union reg_pair fnr;
int rd = (insn >> 12) & 0xf; int rd = (insn >> 12) & 0xf;
int rn = (insn >> 16) & 0xf; int rn = (insn >> 16) & 0xf;
int rm = insn & 0xf; int rm = insn & 0xf;
long rdv; long rdv;
long rnv = regs->uregs[rn]; long rnv = (rn == 15) ? ppc : regs->uregs[rn];
long rmv = regs->uregs[rm]; /* rm/rmv may be invalid, don't care. */ long rmv = (rm == 15) ? ppc : regs->uregs[rm];
long cpsr = regs->ARM_cpsr; long cpsr = regs->ARM_cpsr;
fnr.dr = insnslot_llret_3arg_rflags(rnv, 0, rmv, cpsr, i_fn); fnr.dr = insnslot_llret_3arg_rflags(rnv, 0, rmv, cpsr, i_fn);
......
...@@ -351,17 +351,21 @@ EXPORT_SYMBOL(dump_fpu); ...@@ -351,17 +351,21 @@ EXPORT_SYMBOL(dump_fpu);
/* /*
* Shuffle the argument into the correct register before calling the * Shuffle the argument into the correct register before calling the
* thread function. r1 is the thread argument, r2 is the pointer to * thread function. r4 is the thread argument, r5 is the pointer to
* the thread function, and r3 points to the exit function. * the thread function, and r6 points to the exit function.
*/ */
extern void kernel_thread_helper(void); extern void kernel_thread_helper(void);
asm( ".pushsection .text\n" asm( ".pushsection .text\n"
" .align\n" " .align\n"
" .type kernel_thread_helper, #function\n" " .type kernel_thread_helper, #function\n"
"kernel_thread_helper:\n" "kernel_thread_helper:\n"
" mov r0, r1\n" #ifdef CONFIG_TRACE_IRQFLAGS
" mov lr, r3\n" " bl trace_hardirqs_on\n"
" mov pc, r2\n" #endif
" msr cpsr_c, r7\n"
" mov r0, r4\n"
" mov lr, r6\n"
" mov pc, r5\n"
" .size kernel_thread_helper, . - kernel_thread_helper\n" " .size kernel_thread_helper, . - kernel_thread_helper\n"
" .popsection"); " .popsection");
...@@ -391,11 +395,12 @@ pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) ...@@ -391,11 +395,12 @@ pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
memset(&regs, 0, sizeof(regs)); memset(&regs, 0, sizeof(regs));
regs.ARM_r1 = (unsigned long)arg; regs.ARM_r4 = (unsigned long)arg;
regs.ARM_r2 = (unsigned long)fn; regs.ARM_r5 = (unsigned long)fn;
regs.ARM_r3 = (unsigned long)kernel_thread_exit; regs.ARM_r6 = (unsigned long)kernel_thread_exit;
regs.ARM_r7 = SVC_MODE | PSR_ENDSTATE | PSR_ISETSTATE;
regs.ARM_pc = (unsigned long)kernel_thread_helper; regs.ARM_pc = (unsigned long)kernel_thread_helper;
regs.ARM_cpsr = SVC_MODE | PSR_ENDSTATE | PSR_ISETSTATE; regs.ARM_cpsr = regs.ARM_r7 | PSR_I_BIT;
return do_fork(flags|CLONE_VM|CLONE_UNTRACED, 0, &regs, 0, NULL, NULL); return do_fork(flags|CLONE_VM|CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
} }
......
...@@ -131,7 +131,7 @@ EXPORT_SYMBOL(clk_disable); ...@@ -131,7 +131,7 @@ EXPORT_SYMBOL(clk_disable);
*/ */
static unsigned long clk_mtu_get_rate(struct clk *clk) static unsigned long clk_mtu_get_rate(struct clk *clk)
{ {
void __iomem *addr = __io_address(U8500_PRCMU_BASE) void __iomem *addr = __io_address(UX500_PRCMU_BASE)
+ PRCM_TCR; + PRCM_TCR;
u32 tcr = readl(addr); u32 tcr = readl(addr);
int mtu = (int) clk->data; int mtu = (int) clk->data;
......
...@@ -21,6 +21,7 @@ static struct map_desc u5500_io_desc[] __initdata = { ...@@ -21,6 +21,7 @@ static struct map_desc u5500_io_desc[] __initdata = {
__IO_DEV_DESC(U5500_GPIO2_BASE, SZ_4K), __IO_DEV_DESC(U5500_GPIO2_BASE, SZ_4K),
__IO_DEV_DESC(U5500_GPIO3_BASE, SZ_4K), __IO_DEV_DESC(U5500_GPIO3_BASE, SZ_4K),
__IO_DEV_DESC(U5500_GPIO4_BASE, SZ_4K), __IO_DEV_DESC(U5500_GPIO4_BASE, SZ_4K),
__IO_DEV_DESC(U5500_PRCMU_BASE, SZ_4K),
}; };
static struct platform_device *u5500_platform_devs[] __initdata = { static struct platform_device *u5500_platform_devs[] __initdata = {
......
...@@ -218,6 +218,9 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask) ...@@ -218,6 +218,9 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
cache_id = readl(l2x0_base + L2X0_CACHE_ID); cache_id = readl(l2x0_base + L2X0_CACHE_ID);
aux = readl(l2x0_base + L2X0_AUX_CTRL); aux = readl(l2x0_base + L2X0_AUX_CTRL);
aux &= aux_mask;
aux |= aux_val;
/* Determine the number of ways */ /* Determine the number of ways */
switch (cache_id & L2X0_CACHE_ID_PART_MASK) { switch (cache_id & L2X0_CACHE_ID_PART_MASK) {
case L2X0_CACHE_ID_PART_L310: case L2X0_CACHE_ID_PART_L310:
...@@ -248,8 +251,6 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask) ...@@ -248,8 +251,6 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
if (!(readl(l2x0_base + L2X0_CTRL) & 1)) { if (!(readl(l2x0_base + L2X0_CTRL) & 1)) {
/* l2x0 controller is disabled */ /* l2x0 controller is disabled */
aux &= aux_mask;
aux |= aux_val;
writel(aux, l2x0_base + L2X0_AUX_CTRL); writel(aux, l2x0_base + L2X0_AUX_CTRL);
l2x0_inv_all(); l2x0_inv_all();
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
# #
# http://www.arm.linux.org.uk/developer/machines/?action=new # http://www.arm.linux.org.uk/developer/machines/?action=new
# #
# Last update: Sat May 1 10:36:42 2010 # Last update: Mon Jul 12 21:10:14 2010
# #
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
# #
...@@ -1994,7 +1994,7 @@ spark MACH_SPARK SPARK 2002 ...@@ -1994,7 +1994,7 @@ spark MACH_SPARK SPARK 2002
benzina MACH_BENZINA BENZINA 2003 benzina MACH_BENZINA BENZINA 2003
blaze MACH_BLAZE BLAZE 2004 blaze MACH_BLAZE BLAZE 2004
linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005 linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
htckovsky MACH_HTCVENUS HTCVENUS 2006 htckovsky MACH_HTCKOVSKY HTCKOVSKY 2006
sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007 sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007
hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008 hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008
sapphira MACH_SAPPHIRA SAPPHIRA 2009 sapphira MACH_SAPPHIRA SAPPHIRA 2009
...@@ -2609,7 +2609,7 @@ fujitsu_tvstbsoc1 MACH_FUJITSU_TVSTBSOC1 FUJITSU_TVSTBSOC1 2621 ...@@ -2609,7 +2609,7 @@ fujitsu_tvstbsoc1 MACH_FUJITSU_TVSTBSOC1 FUJITSU_TVSTBSOC1 2621
lexikon MACH_LEXIKON LEXIKON 2622 lexikon MACH_LEXIKON LEXIKON 2622
mini2440v2 MACH_MINI2440V2 MINI2440V2 2623 mini2440v2 MACH_MINI2440V2 MINI2440V2 2623
icontrol MACH_ICONTROL ICONTROL 2624 icontrol MACH_ICONTROL ICONTROL 2624
sheevad MACH_SHEEVAD SHEEVAD 2625 gplugd MACH_SHEEVAD SHEEVAD 2625
qsd8x50a_st1_1 MACH_QSD8X50A_ST1_1 QSD8X50A_ST1_1 2626 qsd8x50a_st1_1 MACH_QSD8X50A_ST1_1 QSD8X50A_ST1_1 2626
qsd8x50a_st1_5 MACH_QSD8X50A_ST1_5 QSD8X50A_ST1_5 2627 qsd8x50a_st1_5 MACH_QSD8X50A_ST1_5 QSD8X50A_ST1_5 2627
bee MACH_BEE BEE 2628 bee MACH_BEE BEE 2628
...@@ -2804,3 +2804,149 @@ teton_bga MACH_TETON_BGA TETON_BGA 2816 ...@@ -2804,3 +2804,149 @@ teton_bga MACH_TETON_BGA TETON_BGA 2816
snapper9g45 MACH_SNAPPER9G45 SNAPPER9G45 2817 snapper9g45 MACH_SNAPPER9G45 SNAPPER9G45 2817
tam3517 MACH_TAM3517 TAM3517 2818 tam3517 MACH_TAM3517 TAM3517 2818
pdc100 MACH_PDC100 PDC100 2819 pdc100 MACH_PDC100 PDC100 2819
eukrea_cpuimx25sd MACH_EUKREA_CPUIMX25 EUKREA_CPUIMX25 2820
eukrea_cpuimx35sd MACH_EUKREA_CPUIMX35 EUKREA_CPUIMX35 2821
eukrea_cpuimx51sd MACH_EUKREA_CPUIMX51SD EUKREA_CPUIMX51SD 2822
eukrea_cpuimx51 MACH_EUKREA_CPUIMX51 EUKREA_CPUIMX51 2823
p565 MACH_P565 P565 2824
acer_a4 MACH_ACER_A4 ACER_A4 2825
davinci_dm368_bip MACH_DAVINCI_DM368_BIP DAVINCI_DM368_BIP 2826
eshare MACH_ESHARE ESHARE 2827
hw_omapl138_europa MACH_HW_OMAPL138_EUROPA HW_OMAPL138_EUROPA 2828
wlbargn MACH_WLBARGN WLBARGN 2829
bm170 MACH_BM170 BM170 2830
netspace_mini_v2 MACH_NETSPACE_MINI_V2 NETSPACE_MINI_V2 2831
netspace_plug_v2 MACH_NETSPACE_PLUG_V2 NETSPACE_PLUG_V2 2832
siemens_l1 MACH_SIEMENS_L1 SIEMENS_L1 2833
elv_lcu1 MACH_ELV_LCU1 ELV_LCU1 2834
mcu1 MACH_MCU1 MCU1 2835
omap3_tao3530 MACH_OMAP3_TAO3530 OMAP3_TAO3530 2836
omap3_pcutouch MACH_OMAP3_PCUTOUCH OMAP3_PCUTOUCH 2837
smdkc210 MACH_SMDKC210 SMDKC210 2838
omap3_braillo MACH_OMAP3_BRAILLO OMAP3_BRAILLO 2839
spyplug MACH_SPYPLUG SPYPLUG 2840
ginger MACH_GINGER GINGER 2841
tny_t3530 MACH_TNY_T3530 TNY_T3530 2842
pca102 MACH_PCA102 PCA102 2843
spade MACH_SPADE SPADE 2844
mxc25_topaz MACH_MXC25_TOPAZ MXC25_TOPAZ 2845
t5325 MACH_T5325 T5325 2846
gw2361 MACH_GW2361 GW2361 2847
elog MACH_ELOG ELOG 2848
income MACH_INCOME INCOME 2849
bcm589x MACH_BCM589X BCM589X 2850
etna MACH_ETNA ETNA 2851
hawks MACH_HAWKS HAWKS 2852
meson MACH_MESON MESON 2853
xsbase255 MACH_XSBASE255 XSBASE255 2854
pvm2030 MACH_PVM2030 PVM2030 2855
mioa502 MACH_MIOA502 MIOA502 2856
vvbox_sdorig2 MACH_VVBOX_SDORIG2 VVBOX_SDORIG2 2857
vvbox_sdlite2 MACH_VVBOX_SDLITE2 VVBOX_SDLITE2 2858
vvbox_sdpro4 MACH_VVBOX_SDPRO4 VVBOX_SDPRO4 2859
htc_spv_m700 MACH_HTC_SPV_M700 HTC_SPV_M700 2860
mx257sx MACH_MX257SX MX257SX 2861
goni MACH_GONI GONI 2862
msm8x55_svlte_ffa MACH_MSM8X55_SVLTE_FFA MSM8X55_SVLTE_FFA 2863
msm8x55_svlte_surf MACH_MSM8X55_SVLTE_SURF MSM8X55_SVLTE_SURF 2864
quickstep MACH_QUICKSTEP QUICKSTEP 2865
dmw96 MACH_DMW96 DMW96 2866
hammerhead MACH_HAMMERHEAD HAMMERHEAD 2867
trident MACH_TRIDENT TRIDENT 2868
lightning MACH_LIGHTNING LIGHTNING 2869
iconnect MACH_ICONNECT ICONNECT 2870
autobot MACH_AUTOBOT AUTOBOT 2871
coconut MACH_COCONUT COCONUT 2872
durian MACH_DURIAN DURIAN 2873
cayenne MACH_CAYENNE CAYENNE 2874
fuji MACH_FUJI FUJI 2875
synology_6282 MACH_SYNOLOGY_6282 SYNOLOGY_6282 2876
em1sy MACH_EM1SY EM1SY 2877
m502 MACH_M502 M502 2878
matrix518 MACH_MATRIX518 MATRIX518 2879
tiny_gurnard MACH_TINY_GURNARD TINY_GURNARD 2880
spear1310 MACH_SPEAR1310 SPEAR1310 2881
bv07 MACH_BV07 BV07 2882
mxt_td61 MACH_MXT_TD61 MXT_TD61 2883
openrd_ultimate MACH_OPENRD_ULTIMATE OPENRD_ULTIMATE 2884
devixp MACH_DEVIXP DEVIXP 2885
miccpt MACH_MICCPT MICCPT 2886
mic256 MACH_MIC256 MIC256 2887
as1167 MACH_AS1167 AS1167 2888
omap3_ibiza MACH_OMAP3_IBIZA OMAP3_IBIZA 2889
u5500 MACH_U5500 U5500 2890
davinci_picto MACH_DAVINCI_PICTO DAVINCI_PICTO 2891
mecha MACH_MECHA MECHA 2892
bubba3 MACH_BUBBA3 BUBBA3 2893
pupitre MACH_PUPITRE PUPITRE 2894
tegra_harmony MACH_TEGRA_HARMONY TEGRA_HARMONY 2895
tegra_vogue MACH_TEGRA_VOGUE TEGRA_VOGUE 2896
tegra_e1165 MACH_TEGRA_E1165 TEGRA_E1165 2897
simplenet MACH_SIMPLENET SIMPLENET 2898
ec4350tbm MACH_EC4350TBM EC4350TBM 2899
pec_tc MACH_PEC_TC PEC_TC 2900
pec_hc2 MACH_PEC_HC2 PEC_HC2 2901
esl_mobilis_a MACH_ESL_MOBILIS_A ESL_MOBILIS_A 2902
esl_mobilis_b MACH_ESL_MOBILIS_B ESL_MOBILIS_B 2903
esl_wave_a MACH_ESL_WAVE_A ESL_WAVE_A 2904
esl_wave_b MACH_ESL_WAVE_B ESL_WAVE_B 2905
unisense_mmm MACH_UNISENSE_MMM UNISENSE_MMM 2906
blueshark MACH_BLUESHARK BLUESHARK 2907
e10 MACH_E10 E10 2908
app3k_robin MACH_APP3K_ROBIN APP3K_ROBIN 2909
pov15hd MACH_POV15HD POV15HD 2910
stella MACH_STELLA STELLA 2911
linkstation_lschl MACH_LINKSTATION_LSCHL LINKSTATION_LSCHL 2913
netwalker MACH_NETWALKER NETWALKER 2914
acsx106 MACH_ACSX106 ACSX106 2915
atlas5_c1 MACH_ATLAS5_C1 ATLAS5_C1 2916
nsb3ast MACH_NSB3AST NSB3AST 2917
gnet_slc MACH_GNET_SLC GNET_SLC 2918
af4000 MACH_AF4000 AF4000 2919
ark9431 MACH_ARK9431 ARK9431 2920
fs_s5pc100 MACH_FS_S5PC100 FS_S5PC100 2921
omap3505nova8 MACH_OMAP3505NOVA8 OMAP3505NOVA8 2922
omap3621_edp1 MACH_OMAP3621_EDP1 OMAP3621_EDP1 2923
oratisaes MACH_ORATISAES ORATISAES 2924
smdkv310 MACH_SMDKV310 SMDKV310 2925
siemens_l0 MACH_SIEMENS_L0 SIEMENS_L0 2926
ventana MACH_VENTANA VENTANA 2927
wm8505_7in_netbook MACH_WM8505_7IN_NETBOOK WM8505_7IN_NETBOOK 2928
ec4350sdb MACH_EC4350SDB EC4350SDB 2929
mimas MACH_MIMAS MIMAS 2930
titan MACH_TITAN TITAN 2931
craneboard MACH_CRANEBOARD CRANEBOARD 2932
es2440 MACH_ES2440 ES2440 2933
najay_a9263 MACH_NAJAY_A9263 NAJAY_A9263 2934
htctornado MACH_HTCTORNADO HTCTORNADO 2935
dimm_mx257 MACH_DIMM_MX257 DIMM_MX257 2936
jigen301 MACH_JIGEN JIGEN 2937
smdk6450 MACH_SMDK6450 SMDK6450 2938
meno_qng MACH_MENO_QNG MENO_QNG 2939
ns2416 MACH_NS2416 NS2416 2940
rpc353 MACH_RPC353 RPC353 2941
tq6410 MACH_TQ6410 TQ6410 2942
sky6410 MACH_SKY6410 SKY6410 2943
dynasty MACH_DYNASTY DYNASTY 2944
vivo MACH_VIVO VIVO 2945
bury_bl7582 MACH_BURY_BL7582 BURY_BL7582 2946
bury_bps5270 MACH_BURY_BPS5270 BURY_BPS5270 2947
basi MACH_BASI BASI 2948
tn200 MACH_TN200 TN200 2949
c2mmi MACH_C2MMI C2MMI 2950
meson_6236m MACH_MESON_6236M MESON_6236M 2951
meson_8626m MACH_MESON_8626M MESON_8626M 2952
tube MACH_TUBE TUBE 2953
messina MACH_MESSINA MESSINA 2954
mx50_arm2 MACH_MX50_ARM2 MX50_ARM2 2955
cetus9263 MACH_CETUS9263 CETUS9263 2956
brownstone MACH_BROWNSTONE BROWNSTONE 2957
vmx25 MACH_VMX25 VMX25 2958
vmx51 MACH_VMX51 VMX51 2959
abacus MACH_ABACUS ABACUS 2960
cm4745 MACH_CM4745 CM4745 2961
oratislink MACH_ORATISLINK ORATISLINK 2962
davinci_dm365_dvr MACH_DAVINCI_DM365_DVR DAVINCI_DM365_DVR 2963
netviz MACH_NETVIZ NETVIZ 2964
flexibity MACH_FLEXIBITY FLEXIBITY 2965
wlan_computer MACH_WLAN_COMPUTER WLAN_COMPUTER 2966
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment