MAV'RIC
compiler.h
1 #ifndef COMPILER_H
2 #define COMPILER_H
3 
4 #include "stdint.h"
5 
6 typedef unsigned char Bool;
7 #ifndef __cplusplus
8 #if !defined(__bool_true_false_are_defined)
9 typedef unsigned char bool;
10 #endif
11 #endif
12 typedef int8_t S8 ;
13 typedef uint8_t U8 ;
14 typedef int16_t S16;
15 typedef uint16_t U16;
16 typedef uint16_t le16_t;
17 typedef uint16_t be16_t;
18 typedef int32_t S32;
19 typedef uint32_t U32;
20 typedef uint32_t le32_t;
21 typedef uint32_t be32_t;
22 typedef signed long long int32_t S64;
23 typedef unsigned long long int32_t U64;
24 typedef float F32;
25 typedef double F64;
26 typedef uint32_t iram_size_t;
27 
28 #define NULL 0
29 
30 #define DISABLE 0
31 #define ENABLE 1
32 #ifndef __cplusplus
33 #if !defined(__bool_true_false_are_defined)
34 #define false 0
35 #define true 1
36 #endif
37 #endif
38 #define PASS 0
39 #define FAIL 1
40 #define LOW 0
41 #define HIGH 1
42 
43 
44 
47 
55 #define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24))
56 
63 #define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16))
64 
71 #if (defined __GNUC__)
72  #define bit_reverse32(u32) \
73  (\
74  {\
75  uint32_t __value = (U32)(u32);\
76  __asm__ ("brev\t%0" : "+r" (__value) : : "cc");\
77  (U32)__value;\
78  }\
79  )
80 #elif (defined __ICCAVR32__)
81  #define bit_reverse32(u32) ((U32)__bit_reverse((U32)(u32)))
82 #endif
83 
90 #define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\
91  ((U64)bit_reverse32((U64)(u64)) << 32)))
92 
94 
95 
98 
107 #define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) )
108 
116 #define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) )
117 
126 #define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) )
127 
135 #define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1))
136 
144 #define Align_down(val, n ) ( (val) & ~((n) - 1))
145 
147 
148 
160 
170 #define Abs(a) (((a) < 0 ) ? -(a) : (a))
171 
181 #define Min(a, b) (((a) < (b)) ? (a) : (b))
182 
192 #define Max(a, b) (((a) > (b)) ? (a) : (b))
193 
194 #define abs(a) Abs(a)
195 #define min(a, b) Min(a, b)
196 
197 #define max(a, b) Max(a, b)
198 
199 
200 #endif