mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 08:44:21 +08:00
Merge master.kernel.org:/home/rmk/linux-2.6-arm-smp
This commit is contained in:
commit
ca49a601c2
@ -176,6 +176,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
|
|||||||
cpu_set(cpu, mm->cpu_vm_mask);
|
cpu_set(cpu, mm->cpu_vm_mask);
|
||||||
cpu_switch_mm(mm->pgd, mm);
|
cpu_switch_mm(mm->pgd, mm);
|
||||||
enter_lazy_tlb(mm, current);
|
enter_lazy_tlb(mm, current);
|
||||||
|
local_flush_tlb_all();
|
||||||
|
|
||||||
cpu_init();
|
cpu_init();
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
1: ldrexb r2, [r1]
|
1: ldrexb r2, [r1]
|
||||||
\instr r2, r2, r3
|
\instr r2, r2, r3
|
||||||
strexb r0, r2, [r1]
|
strexb r0, r2, [r1]
|
||||||
cmpne r0, #0
|
cmp r0, #0
|
||||||
bne 1b
|
bne 1b
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
.endm
|
.endm
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
|
||||||
#include <asm/atomic.h>
|
#include <asm/atomic.h>
|
||||||
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/delay.h>
|
#include <asm/delay.h>
|
||||||
#include <asm/mmu_context.h>
|
#include <asm/mmu_context.h>
|
||||||
#include <asm/procinfo.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.
|
* "cpu" is Linux's internal ID.
|
||||||
*/
|
*/
|
||||||
pen_release = cpu;
|
pen_release = cpu;
|
||||||
|
flush_cache_all();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX
|
* XXX
|
||||||
|
@ -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_first_bit_be(const unsigned long *p, unsigned size);
|
||||||
extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
|
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.
|
* 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) ? \
|
(__builtin_constant_p(nr) ? \
|
||||||
____atomic_##name(nr, p) : \
|
____atomic_##name(nr, p) : \
|
||||||
_##name##_be(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) \
|
#define NONATOMIC_BITOP(name,nr,p) \
|
||||||
(____nonatomic_##name(nr, p))
|
(____nonatomic_##name(nr, p))
|
||||||
|
Loading…
Reference in New Issue
Block a user