]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge master.kernel.org:/home/rmk/linux-2.6-arm-smp
authorLinus Torvalds <torvalds@g5.osdl.org>
Fri, 29 Jul 2005 16:47:08 +0000 (09:47 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 29 Jul 2005 16:47:08 +0000 (09:47 -0700)
arch/arm/kernel/smp.c
arch/arm/lib/bitops.h
arch/arm/mach-integrator/platsmp.c
include/asm-arm/bitops.h

index 295e0a8379cfc9c95e080f063b815b968acf6a10..b2085735a2baf1833c90ab1ad9c237d58e869e28 100644 (file)
@@ -176,6 +176,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
        cpu_set(cpu, mm->cpu_vm_mask);
        cpu_switch_mm(mm->pgd, mm);
        enter_lazy_tlb(mm, current);
+       local_flush_tlb_all();
 
        cpu_init();
 
index 5382a302360273d697b10839ab21ca92d9bb1e71..2036ff15bda9b70e0c5f8b6f79538008ebe393e4 100644 (file)
@@ -7,7 +7,7 @@
 1:     ldrexb  r2, [r1]
        \instr  r2, r2, r3
        strexb  r0, r2, [r1]
-       cmpne   r0, #0
+       cmp     r0, #0
        bne     1b
        mov     pc, lr
        .endm
index aecf47ba033a753040646ec8779bd48767675261..ea10bd8c972c4bf4d6df17c0ef0faf77871f4f7f 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/mm.h>
 
 #include <asm/atomic.h>
+#include <asm/cacheflush.h>
 #include <asm/delay.h>
 #include <asm/mmu_context.h>
 #include <asm/procinfo.h>
@@ -80,6 +81,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
         * "cpu" is Linux's internal ID.
         */
        pen_release = cpu;
+       flush_cache_all();
 
        /*
         * XXX
index c1adc6b3e86d012139723b8d24e45e3ce720dcbe..aad7aad026b319d7390ab3bf974f61d25c1ba5e6 100644 (file)
@@ -229,6 +229,7 @@ extern int _find_next_zero_bit_be(const void * p, int size, int offset);
 extern int _find_first_bit_be(const unsigned long *p, unsigned size);
 extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
 
+#ifndef CONFIG_SMP
 /*
  * The __* form of bitops are non-atomic and may be reordered.
  */
@@ -241,6 +242,10 @@ extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
        (__builtin_constant_p(nr) ?             \
         ____atomic_##name(nr, p) :             \
         _##name##_be(nr,p))
+#else
+#define ATOMIC_BITOP_LE(name,nr,p)     _##name##_le(nr,p)
+#define ATOMIC_BITOP_BE(name,nr,p)     _##name##_be(nr,p)
+#endif
 
 #define NONATOMIC_BITOP(name,nr,p)             \
        (____nonatomic_##name(nr, p))