X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fcompiler.h;h=cfe90666017bf4aeed4ab04aabb8b1c5724292dc;hb=0ef165ecb57943e17a8ee8270df68ffb8d032e29;hp=3b59813c9cab06370dfd5cccea5bcb997c37438f;hpb=0bdc6b84f2d31f050e1f6d6b8f9f95687f14f877;p=sliver-openvswitch.git diff --git a/lib/compiler.h b/lib/compiler.h index 3b59813c9..cfe906660 100644 --- a/lib/compiler.h +++ b/lib/compiler.h @@ -206,4 +206,18 @@ static void f(void) #endif +/* OVS_PREFETCH() can be used to instruct the CPU to fetch the cache + * line containing the given address to a CPU cache. + * OVS_PREFETCH_WRITE() should be used when the memory is going to be + * written to. Depending on the target CPU, this can generate the same + * instruction as OVS_PREFETCH(), or bring the data into the cache in an + * exclusive state. */ +#if __GNUC__ +#define OVS_PREFETCH(addr) __builtin_prefetch((addr)) +#define OVS_PREFETCH_WRITE(addr) __builtin_prefetch((addr), 1) +#else +#define OVS_PREFETCH(addr) +#define OVS_PREFETCH_WRITE(addr) +#endif + #endif /* compiler.h */