Commit dbc895f9 authored by Graf Yang's avatar Graf Yang Committed by Bryan Wu
Browse files

Blackfin arch: smp patch cleanup from LKML review



1. Use inline get_l1_... functions instead of macro
2. Fix compile issue about smp barrier functions

Signed-off-by: default avatarGraf Yang <graf.yang@analog.com>
Signed-off-by: default avatarBryan Wu <cooloney@kernel.org>
parent f994607a
Loading
Loading
Loading
Loading
+75 −0
Original line number Original line Diff line number Diff line
@@ -9,4 +9,79 @@


#include <mach/mem_map.h>
#include <mach/mem_map.h>


#ifndef __ASSEMBLY__

#ifdef CONFIG_SMP
static inline ulong get_l1_scratch_start_cpu(int cpu)
{
	return (cpu) ? COREB_L1_SCRATCH_START : COREA_L1_SCRATCH_START;
}
static inline ulong get_l1_code_start_cpu(int cpu)
{
	return (cpu) ? COREB_L1_CODE_START : COREA_L1_CODE_START;
}
static inline ulong get_l1_data_a_start_cpu(int cpu)
{
	return (cpu) ? COREB_L1_DATA_A_START : COREA_L1_DATA_A_START;
}
static inline ulong get_l1_data_b_start_cpu(int cpu)
{
	return (cpu) ? COREB_L1_DATA_B_START : COREA_L1_DATA_B_START;
}

static inline ulong get_l1_scratch_start(void)
{
	return get_l1_scratch_start_cpu(blackfin_core_id());
}
static inline ulong get_l1_code_start(void)
{
	return get_l1_code_start_cpu(blackfin_core_id());
}
static inline ulong get_l1_data_a_start(void)
{
	return get_l1_data_a_start_cpu(blackfin_core_id());
}
static inline ulong get_l1_data_b_start(void)
{
	return get_l1_data_b_start_cpu(blackfin_core_id());
}

#else /* !CONFIG_SMP */

static inline ulong get_l1_scratch_start_cpu(int cpu)
{
	return L1_SCRATCH_START;
}
static inline ulong get_l1_code_start_cpu(int cpu)
{
	return L1_CODE_START;
}
static inline ulong get_l1_data_a_start_cpu(int cpu)
{
	return L1_DATA_A_START;
}
static inline ulong get_l1_data_b_start_cpu(int cpu)
{
	return L1_DATA_B_START;
}
static inline ulong get_l1_scratch_start(void)
{
	return get_l1_scratch_start_cpu(0);
}
static inline ulong get_l1_code_start(void)
{
	return  get_l1_code_start_cpu(0);
}
static inline ulong get_l1_data_a_start(void)
{
	return get_l1_data_a_start_cpu(0);
}
static inline ulong get_l1_data_b_start(void)
{
	return get_l1_data_b_start_cpu(0);
}

#endif /* CONFIG_SMP */
#endif /* __ASSEMBLY__ */

#endif				/* _MEM_MAP_H_ */
#endif				/* _MEM_MAP_H_ */
+2 −0
Original line number Original line Diff line number Diff line
@@ -32,6 +32,8 @@


#define raw_smp_processor_id()  blackfin_core_id()
#define raw_smp_processor_id()  blackfin_core_id()


extern char coreb_trampoline_start, coreb_trampoline_end;

struct corelock_slot {
struct corelock_slot {
	int lock;
	int lock;
};
};
+4 −2
Original line number Original line Diff line number Diff line
@@ -66,10 +66,13 @@ asmlinkage unsigned long __raw_cmpxchg_4_asm(volatile void *ptr,
# define smp_mb()	do { barrier(); smp_check_barrier(); smp_mark_barrier(); } while (0)
# define smp_mb()	do { barrier(); smp_check_barrier(); smp_mark_barrier(); } while (0)
# define smp_rmb()	do { barrier(); smp_check_barrier(); } while (0)
# define smp_rmb()	do { barrier(); smp_check_barrier(); } while (0)
# define smp_wmb()	do { barrier(); smp_mark_barrier(); } while (0)
# define smp_wmb()	do { barrier(); smp_mark_barrier(); } while (0)
#define smp_read_barrier_depends()	do { barrier(); smp_check_barrier(); } while (0)

#else
#else
# define smp_mb()	barrier()
# define smp_mb()	barrier()
# define smp_rmb()	barrier()
# define smp_rmb()	barrier()
# define smp_wmb()	barrier()
# define smp_wmb()	barrier()
#define smp_read_barrier_depends()	barrier()
#endif
#endif


static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
@@ -120,8 +123,6 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
	((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \
	((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \
		(unsigned long)(n), sizeof(*(ptr))))
		(unsigned long)(n), sizeof(*(ptr))))


#define smp_read_barrier_depends()	smp_check_barrier()

#else /* !CONFIG_SMP */
#else /* !CONFIG_SMP */


#define smp_mb()	barrier()
#define smp_mb()	barrier()
@@ -192,6 +193,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
 */
 */


#include <asm/l1layout.h>
#include <asm/l1layout.h>
#include <asm/mem_map.h>


asmlinkage struct task_struct *resume(struct task_struct *prev, struct task_struct *next);
asmlinkage struct task_struct *resume(struct task_struct *prev, struct task_struct *next);


+2 −0
Original line number Original line Diff line number Diff line
@@ -99,6 +99,8 @@ EXPORT_SYMBOL(__raw_bit_test_set_asm);
EXPORT_SYMBOL(__raw_bit_test_clear_asm);
EXPORT_SYMBOL(__raw_bit_test_clear_asm);
EXPORT_SYMBOL(__raw_bit_test_toggle_asm);
EXPORT_SYMBOL(__raw_bit_test_toggle_asm);
EXPORT_SYMBOL(__raw_uncached_fetch_asm);
EXPORT_SYMBOL(__raw_uncached_fetch_asm);
#ifdef __ARCH_SYNC_CORE_DCACHE
EXPORT_SYMBOL(__raw_smp_mark_barrier_asm);
EXPORT_SYMBOL(__raw_smp_mark_barrier_asm);
EXPORT_SYMBOL(__raw_smp_check_barrier_asm);
EXPORT_SYMBOL(__raw_smp_check_barrier_asm);
#endif
#endif
#endif
+1 −0
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@
#include <asm/blackfin.h>
#include <asm/blackfin.h>
#include <asm/cplb.h>
#include <asm/cplb.h>
#include <asm/cplbinit.h>
#include <asm/cplbinit.h>
#include <asm/mem_map.h>


#if ANOMALY_05000263
#if ANOMALY_05000263
# error the MPU will not function safely while Anomaly 05000263 applies
# error the MPU will not function safely while Anomaly 05000263 applies
Loading