X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=arch_x86.h;h=e924913ebc235d308ed088f1fe6fd455ba591a67;hp=99ccd298dce87faada641ddc11e017c97c8eeced;hb=121a5d44c8cc7197116df73854cb94c6cfbad0b0;hpb=ad7de003b45b3a7339b90208c321517c2dcbdc3e diff --git a/arch_x86.h b/arch_x86.h index 99ccd29..e924913 100644 --- a/arch_x86.h +++ b/arch_x86.h @@ -1,3 +1,6 @@ +#ifndef _ARCH_X86_H +#define _ARCH_X86_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 + /* Assume P4 or newer */ #define CONFIG_HAVE_FENCE 1 #define CONFIG_HAVE_MEM_COHERENCY @@ -51,6 +56,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() + /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ static inline void rep_nop(void) { @@ -135,3 +162,5 @@ static inline cycles_t get_cycles (void) rdtscll(ret); return ret; } + +#endif /* _ARCH_X86_H */