1 #ifndef __GCTYPES_H__ 2 #define __GCTYPES_H__ 3 4 /*! \file gctypes.h 5 \brief Data type definitions 6 7 */ 8 9 #include <stdbool.h> 10 #include <stdint.h> 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif /* __cplusplus */ 15 16 /*+----------------------------------------------------------------------------------------------+*/ 17 typedef uint8_t u8; ///< 8bit unsigned integer 18 typedef uint16_t u16; ///< 16bit unsigned integer 19 typedef uint32_t u32; ///< 32bit unsigned integer 20 typedef uint64_t u64; ///< 64bit unsigned integer 21 /*+----------------------------------------------------------------------------------------------+*/ 22 typedef int8_t s8; ///< 8bit signed integer 23 typedef int16_t s16; ///< 16bit signed integer 24 typedef int32_t s32; ///< 32bit signed integer 25 typedef int64_t s64; ///< 64bit signed integer 26 /*+----------------------------------------------------------------------------------------------+*/ 27 typedef volatile u8 vu8; ///< 8bit unsigned volatile integer 28 typedef volatile u16 vu16; ///< 16bit unsigned volatile integer 29 typedef volatile u32 vu32; ///< 32bit unsigned volatile integer 30 typedef volatile u64 vu64; ///< 64bit unsigned volatile integer 31 /*+----------------------------------------------------------------------------------------------+*/ 32 typedef volatile s8 vs8; ///< 8bit signed volatile integer 33 typedef volatile s16 vs16; ///< 16bit signed volatile integer 34 typedef volatile s32 vs32; ///< 32bit signed volatile integer 35 typedef volatile s64 vs64; ///< 64bit signed volatile integer 36 /*+----------------------------------------------------------------------------------------------+*/ 37 // fixed point math typedefs 38 typedef s16 sfp16; ///< signed 8:8 fixed point 39 typedef s32 sfp32; ///< signed 20:8 fixed point 40 typedef u16 ufp16; ///< unsigned 8:8 fixed point 41 typedef u32 ufp32; ///< unsigned 24:8 fixed point 42 /*+----------------------------------------------------------------------------------------------+*/ 43 typedef float f32; 44 typedef double f64; 45 /*+----------------------------------------------------------------------------------------------+*/ 46 typedef volatile float vf32; 47 typedef volatile double vf64; 48 /*+----------------------------------------------------------------------------------------------+*/ 49 50 typedef unsigned int BOOL; 51 /*+----------------------------------------------------------------------------------------------+*/ 52 // alias type typedefs 53 #define FIXED s32 ///< Alias type for sfp32 54 /*+----------------------------------------------------------------------------------------------+*/ 55 #ifndef TRUE 56 #define TRUE 1 ///< True 57 #endif 58 /*+----------------------------------------------------------------------------------------------+*/ 59 #ifndef FALSE 60 #define FALSE 0 ///< False 61 #endif 62 /*+----------------------------------------------------------------------------------------------+*/ 63 #ifndef NULL 64 #define NULL 0 ///< Pointer to 0 65 #endif 66 /*+----------------------------------------------------------------------------------------------+*/ 67 #ifndef LITTLE_ENDIAN 68 #define LITTLE_ENDIAN 3412 69 #endif /* LITTLE_ENDIAN */ 70 /*+----------------------------------------------------------------------------------------------+*/ 71 #ifndef BIG_ENDIAN 72 #define BIG_ENDIAN 1234 73 #endif /* BIGE_ENDIAN */ 74 /*+----------------------------------------------------------------------------------------------+*/ 75 #ifndef BYTE_ORDER 76 #define BYTE_ORDER BIG_ENDIAN 77 #endif /* BYTE_ORDER */ 78 /*+----------------------------------------------------------------------------------------------+*/ 79 80 //! argv structure 81 /*! \struct __argv 82 83 structure used to set up argc/argv 84 85 */ 86 struct __argv { 87 int argvMagic; //!< argv magic number, set to 0x5f617267 ('_arg') if valid 88 char *commandLine; //!< base address of command line, set of null terminated strings 89 int length;//!< total length of command line 90 int argc; 91 char **argv; 92 char **endARGV; 93 }; 94 95 //! Default location for the system argv structure. 96 extern struct __argv *__system_argv; 97 98 // argv struct magic number 99 #define ARGV_MAGIC 0x5f617267 100 101 #ifdef __cplusplus 102 } 103 #endif /* __cplusplus */ 104 105 #endif /* TYPES_H */ 106 107 /* END OF FILE */ 108