6 // ---------------------------------------------------------------------------
7 // Basic Type Definitions
8 // ---------------------------------------------------------------------------
10 typedef volatile unsigned char *P_kal_uint8
;
11 typedef volatile unsigned short *P_kal_uint16
;
12 typedef volatile unsigned int *P_kal_uint32
;
15 typedef unsigned char UBYTE
;
18 typedef signed char kal_int8
;
19 typedef signed short kal_int16
;
20 typedef signed int kal_int32
;
21 typedef long long kal_int64
;
22 typedef unsigned char kal_uint8
;
23 typedef unsigned short kal_uint16
;
24 typedef unsigned int kal_uint32
;
25 typedef unsigned long long kal_uint64
;
26 typedef char kal_char
;
28 typedef unsigned int *UINT32P
;
29 typedef volatile unsigned short *UINT16P
;
30 typedef volatile unsigned char *UINT8P
;
31 typedef unsigned char *U8P
;
33 typedef volatile unsigned char *P_U8
;
34 typedef volatile signed char *P_S8
;
35 typedef volatile unsigned short *P_U16
;
36 typedef volatile signed short *P_S16
;
37 typedef volatile unsigned int *P_U32
;
38 typedef volatile signed int *P_S32
;
39 typedef unsigned long long *P_U64
;
40 typedef signed long long *P_S64
;
42 typedef unsigned char U8
;
43 typedef signed char S8
;
44 typedef unsigned short U16
;
45 typedef signed short S16
;
46 typedef unsigned int U32
;
47 typedef signed int S32
;
48 typedef unsigned long long U64
;
49 typedef signed long long S64
;
50 //typedef unsigned char bool;
52 typedef unsigned char UINT8
;
53 typedef unsigned short UINT16
;
54 typedef unsigned int UINT32
;
55 typedef unsigned short USHORT
;
56 typedef signed char INT8
;
57 typedef signed short INT16
;
58 typedef signed int INT32
;
59 typedef unsigned int DWORD
;
61 typedef unsigned char BYTE
;
65 typedef short *LPWSTR
;
68 // ---------------------------------------------------------------------------
70 // ---------------------------------------------------------------------------
76 #define EXTERN extern "C"
86 #define XOR(A,B) ((!(A) AND (B)) OR ((A) AND !(B)))
100 //enum boolean {false, true};
104 typedef unsigned char BOOL
;
113 // ---------------------------------------------------------------------------
115 // ---------------------------------------------------------------------------
117 #define AS_INT32(x) (*(INT32 *)((void*)x))
118 #define AS_INT16(x) (*(INT16 *)((void*)x))
119 #define AS_INT8(x) (*(INT8 *)((void*)x))
121 #define AS_UINT32(x) (*(UINT32 *)((void*)x))
122 #define AS_UINT16(x) (*(UINT16 *)((void*)x))
123 #define AS_UINT8(x) (*(UINT8 *)((void*)x))
126 // ---------------------------------------------------------------------------
127 // Register Manipulations
128 // ---------------------------------------------------------------------------
130 #define READ_REGISTER_UINT32(reg) \
131 (*(volatile UINT32 * const)(reg))
133 #define WRITE_REGISTER_UINT32(reg, val) \
134 (*(volatile UINT32 * const)(reg)) = (val)
136 #define READ_REGISTER_UINT16(reg) \
137 (*(volatile UINT16 * const)(reg))
139 #define WRITE_REGISTER_UINT16(reg, val) \
140 (*(volatile UINT16 * const)(reg)) = (val)
142 #define READ_REGISTER_UINT8(reg) \
143 (*(volatile UINT8 * const)(reg))
145 #define WRITE_REGISTER_UINT8(reg, val) \
146 (*(volatile UINT8 * const)(reg)) = (val)
148 #define INREG8(x) READ_REGISTER_UINT8((UINT8*)((void*)(x)))
149 #define OUTREG8(x, y) WRITE_REGISTER_UINT8((UINT8*)((void*)(x)), (UINT8)(y))
150 #define SETREG8(x, y) OUTREG8(x, INREG8(x)|(y))
151 #define CLRREG8(x, y) OUTREG8(x, INREG8(x)&~(y))
152 #define MASKREG8(x, y, z) OUTREG8(x, (INREG8(x)&~(y))|(z))
154 #define INREG16(x) READ_REGISTER_UINT16((UINT16*)((void*)(x)))
155 #define OUTREG16(x, y) WRITE_REGISTER_UINT16((UINT16*)((void*)(x)),(UINT16)(y))
156 #define SETREG16(x, y) OUTREG16(x, INREG16(x)|(y))
157 #define CLRREG16(x, y) OUTREG16(x, INREG16(x)&~(y))
158 #define MASKREG16(x, y, z) OUTREG16(x, (INREG16(x)&~(y))|(z))
160 #define INREG32(x) READ_REGISTER_UINT32((UINT32*)((void*)(x)))
161 #define OUTREG32(x, y) WRITE_REGISTER_UINT32((UINT32*)((void*)(x)), (UINT32)(y))
162 #define SETREG32(x, y) OUTREG32(x, INREG32(x)|(y))
163 #define CLRREG32(x, y) OUTREG32(x, INREG32(x)&~(y))
164 #define MASKREG32(x, y, z) OUTREG32(x, (INREG32(x)&~(y))|(z))
167 #define DRV_Reg8(addr) INREG8(addr)
168 #define DRV_WriteReg8(addr, data) OUTREG8(addr, data)
169 #define DRV_SetReg8(addr, data) SETREG8(addr, data)
170 #define DRV_ClrReg8(addr, data) CLRREG8(addr, data)
172 #define DRV_Reg16(addr) INREG16(addr)
173 #define DRV_WriteReg16(addr, data) OUTREG16(addr, data)
174 #define DRV_SetReg16(addr, data) SETREG16(addr, data)
175 #define DRV_ClrReg16(addr, data) CLRREG16(addr, data)
177 #define DRV_Reg32(addr) INREG32(addr)
178 #define DRV_WriteReg32(addr, data) OUTREG32(addr, data)
179 #define DRV_SetReg32(addr, data) SETREG32(addr, data)
180 #define DRV_ClrReg32(addr, data) CLRREG32(addr, data)
182 // !!! DEPRECATED, WILL BE REMOVED LATER !!!
183 #define DRV_Reg(addr) DRV_Reg16(addr)
184 #define DRV_WriteReg(addr, data) DRV_WriteReg16(addr, data)
185 #define DRV_SetReg(addr, data) DRV_SetReg16(addr, data)
186 #define DRV_ClrReg(addr, data) DRV_ClrReg16(addr, data)
189 // ---------------------------------------------------------------------------
190 // Compiler Time Deduction Macros
191 // ---------------------------------------------------------------------------
193 #define _MASK_OFFSET_1(x, n) ((x) & 0x1) ? (n) :
194 #define _MASK_OFFSET_2(x, n) _MASK_OFFSET_1((x), (n)) _MASK_OFFSET_1((x) >> 1, (n) + 1)
195 #define _MASK_OFFSET_4(x, n) _MASK_OFFSET_2((x), (n)) _MASK_OFFSET_2((x) >> 2, (n) + 2)
196 #define _MASK_OFFSET_8(x, n) _MASK_OFFSET_4((x), (n)) _MASK_OFFSET_4((x) >> 4, (n) + 4)
197 #define _MASK_OFFSET_16(x, n) _MASK_OFFSET_8((x), (n)) _MASK_OFFSET_8((x) >> 8, (n) + 8)
198 #define _MASK_OFFSET_32(x, n) _MASK_OFFSET_16((x), (n)) _MASK_OFFSET_16((x) >> 16, (n) + 16)
200 #define MASK_OFFSET_ERROR (0xFFFFFFFF)
202 #define MASK_OFFSET(x) (_MASK_OFFSET_32(x, 0) MASK_OFFSET_ERROR)
205 // ---------------------------------------------------------------------------
207 // ---------------------------------------------------------------------------
210 #define ASSERT(expr) BUG_ON(!(expr))
213 #ifndef NOT_IMPLEMENTED
214 #define NOT_IMPLEMENTED() BUG_ON(1)
217 #define STATIC_ASSERT(pred) STATIC_ASSERT_X(pred, __LINE__)
218 #define STATIC_ASSERT_X(pred, line) STATIC_ASSERT_XX(pred, line)
219 #define STATIC_ASSERT_XX(pred, line) \
220 extern char assertion_failed_at_##line[(pred) ? 1 : -1]
222 // ---------------------------------------------------------------------------
223 // Resolve Compiler Warnings
224 // ---------------------------------------------------------------------------
226 #define NOT_REFERENCED(x) { (x) = (x); }
229 // ---------------------------------------------------------------------------
231 // ---------------------------------------------------------------------------
233 #define MAXIMUM(A,B) (((A)>(B))?(A):(B))
234 #define MINIMUM(A,B) (((A)<(B))?(A):(B))
236 #define ARY_SIZE(x) (sizeof((x)) / sizeof((x[0])))
237 #define DVT_DELAYMACRO(u4Num) \
239 UINT32 u4Count = 0 ; \
240 for (u4Count = 0; u4Count < u4Num; u4Count++ ); \
247 #define UNKNOWN_IC_VERSION 0xFF
250 #endif // _TYPEDEFS_H