vx32

Local 9vx git repository for patches.
git clone git://r-36.net/vx32
Log | Files | Refs

os.h (743B)


      1 // Figure out whether to use %fs or %gs as the vx32 control segment.
      2 // The host operating system is likely to use one of them as the 
      3 // thread-local storage segment.  Use the other one.
      4 
      5 #if defined(__APPLE__)
      6 #	define EXT(s) _ ## s
      7 #	define VSEG_FS
      8 #elif defined(__FreeBSD__)
      9 #	define VSEG_FS
     10 #elif defined(__linux__)
     11 #	if defined(__i386__)
     12 #		define VSEG_FS
     13 #	else /* x86-64 */
     14 #		define VSEG_GS
     15 #	endif
     16 #else
     17 #error	Unsupported operating system.
     18 #endif
     19 
     20 #ifdef VSEG_FS
     21 #	define VSEG %fs
     22 #	define VSEGSTR "%fs"
     23 #	define VSEGPREFIX 0x64
     24 #	define mc_vs mc_fs
     25 #	define ss_vs ss.fs
     26 #else
     27 #	define VSEG  %gs
     28 #	define VSEGSTR  "%gs"
     29 #	define VSEGPREFIX 0x65
     30 #	define mc_vs mc_gs
     31 #	define ss_vs ss.gs
     32 #endif
     33 
     34 #ifndef EXT
     35 #	define EXT(s) s
     36 #endif