diff --git a/src/grayspace-misc/gsdefines.h b/src/grayspace-misc/gsdefines.h new file mode 100755 index 0000000..6c4cb14 --- /dev/null +++ b/src/grayspace-misc/gsdefines.h @@ -0,0 +1,74 @@ +/* + "gsdefines.h" + + created by: grayspace aka J. Leveille + for: UbixOS Project + date: May 11, 2002 + + Purpose: + - I need/like to use simple defines for basic sized types which + aren't compiler dependant. + So here I define them and will use them, when we decide on some conventions + I will search and replace them out with the proper ones + + - I need some kind of define for target architecture + + NOTES: + - I will stick a 'g' on the end global defines I make for myself + - all my types are ending with g when unsigned, gs when signed + - for now, when I don't care about bit width and hwen I want + just an int for example, I will just use 'int' and assume + this will be the fastest type for doing math on the host CPU +*/ + +#ifndef _GSDEFINES_H +#define _GSDEFINES_H + +/* HACK: put somewhere better */ + +/* target CPU types (0) means unknown */ +/* HACK: assume we're using IA32 architecture */ +#define TCPU_UNKNOWN (0) +#define TCPU_IA32 (1) + +/* host compiler types (0) means unknown */ +/* HACK: assume we're using gcc 2.95.* comptible compiler */ +#define HCMPLR_UNKNOWN (0) +#define HCMPLR_GCC_2_95_COMPAT (1) + +#if (TCPU_IA32 & HCMPLR_GCC_2_95_COMPAT) + +#define BYTEg unsigned char +#define BYTEgs signed char +#define WORDg unsigned short int +#define WORDgs signed short int +#define DWORDg unsigned int +#define DWORDgs signed int +#define QWORDg unsigned long long int +#define QWORDgs signed long long int + +#else /* #if (TCPU_IA32 & HCMPLR_GCC_2_95_COMPAT) */ + +#error build environment unknown!!! + +#endif /* #if (TCPU_??? & HCMPLR_???) */ + +/* handy macro for creating a bit mask */ +#define MAKEMASK_GS( numbits, bitpos ) (((1<<(numbits)) - 1)<<(bitpos)) + +/* handy macro for extracting masked bits */ +#define GETBITVAL_GS( bits, bitmask, bitpos ) (((bits)&(bitmask))>>(bitpos)) + +/* handy macro for setting masked bits + NOTE: *only* bits which fall into 'bitmask' once positioned will be set */ +#define SETBITVAL_GS( bits_o, bitmask, bitpos, val )\ + (bits_o) &= ~(bitmask);\ + (bits_o) |= ((val)<<(bitpos)&bitmask) + +/* handy macro for setting masked bits with the assumption + that 'val' once positioned will *only* contain bits in 'bitmask' */ +#define SETBITVAL_FAST_GS( bits_o, bitmask, bitpos, val )\ + (bits_o) &= ~(bitmask);\ + (bits_o) |= ((val)<<(bitpos)) + +#endif /* _GSDEFINES_H */ \ No newline at end of file