X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fcompiler.h;fp=lib%2Fcompiler.h;h=cfe90666017bf4aeed4ab04aabb8b1c5724292dc;hb=7d78f21c057ff50a823220d809ac38c3d907243c;hp=3b59813c9cab06370dfd5cccea5bcb997c37438f;hpb=8d25251929c8f325bed0fff24192d5a87034b32e;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 */