Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Merge branch 'devel'
[palacios.git] / kitten / include / lwk / compiler-gcc.h
1 /* Never include this file directly.  Include <lwk/compiler.h> instead.  */
2
3 /*
4  * Common definitions for all gcc versions go here.
5  */
6
7
8 /* Optimization barrier */
9 /* The "volatile" is due to gcc bugs */
10 #define barrier() __asm__ __volatile__("": : :"memory")
11
12 /* This macro obfuscates arithmetic on a variable address so that gcc
13    shouldn't recognize the original var, and make assumptions about it */
14 /*
15  * Versions of the ppc64 compiler before 4.1 had a bug where use of
16  * RELOC_HIDE could trash r30. The bug can be worked around by changing
17  * the inline assembly constraint from =g to =r, in this particular
18  * case either is valid.
19  */
20 #define RELOC_HIDE(ptr, off)                                    \
21   ({ unsigned long __ptr;                                       \
22     __asm__ ("" : "=r"(__ptr) : "0"(ptr));                      \
23     (typeof(ptr)) (__ptr + (off)); })
24
25
26 #define inline          inline          __attribute__((always_inline))
27 #define __inline__      __inline__      __attribute__((always_inline))
28 #define __inline        __inline        __attribute__((always_inline))
29 #define __deprecated                    __attribute__((deprecated))
30 #define  noinline                       __attribute__((noinline))
31 #define __attribute_pure__              __attribute__((pure))
32 #define __attribute_const__             __attribute__((__const__))