X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=arch_ppc.h;h=b43d08bdac998bcd30446fe30373ef7c261557c2;hp=6dc5f3ee0e6fb90d84c5789e6090d68db1cae689;hb=121a5d44c8cc7197116df73854cb94c6cfbad0b0;hpb=ad7de003b45b3a7339b90208c321517c2dcbdc3e diff --git a/arch_ppc.h b/arch_ppc.h index 6dc5f3e..b43d08b 100644 --- a/arch_ppc.h +++ b/arch_ppc.h @@ -1,3 +1,6 @@ +#ifndef _ARCH_PPC_H +#define _ARCH_PPC_H + /* * arch_x86.h: Definitions for the x86 architecture, derived from Linux. * @@ -18,6 +21,8 @@ * Copyright (c) 2009 Paul E. McKenney, IBM Corporation. */ +#include + #define CONFIG_HAVE_FENCE 1 #define CONFIG_HAVE_MEM_COHERENCY @@ -40,6 +45,28 @@ #define rmc() barrier() #define wmc() barrier() +/* Assume SMP machine, given we don't have this information */ +#define CONFIG_SMP 1 + +#ifdef CONFIG_SMP +#define smp_mb() mb() +#define smp_rmb() rmb() +#define smp_wmb() wmb() +#define smp_mc() mc() +#define smp_rmc() rmc() +#define smp_wmc() wmc() +#else +#define smp_mb() barrier() +#define smp_rmb() barrier() +#define smp_wmb() barrier() +#define smp_mc() barrier() +#define smp_rmc() barrier() +#define smp_wmc() barrier() +#endif + +/* Nop everywhere except on alpha. */ +#define smp_read_barrier_depends() + static inline void cpu_relax(void) { barrier(); @@ -150,3 +177,5 @@ static inline cycles_t get_cycles (void) return (((long long)h) << 32) + l; } } + +#endif /* _ARCH_PPC_H */