GEL  0.99
gel_public.h
Go to the documentation of this file.
1 #ifndef GEL_PUBLIC_H_
2 #define GEL_PUBLIC_H_
3 
4 /*==============================================================================
5  * gel_public.h
6  *==============================================================================
7  * \file This header contains the public definitions.
8  * @author Sylvain Lemouzy (syl.lemouzy@free.fr)
9  * @date 2006/08/02
10  *==============================================================================
11  */
12 
13 #include <gel/common.h>
14 #include <gel/types.h>
15 #include "gel_base_public.h"
16 #include "gel_load_public.h"
17 #include "cursor.h"
18 #include <gel/file.h>
19 #include "util.h"
20 
22 
23 /*==============================================================================
24  * Macro definitions for address conversion
25  *==============================================================================
26  */
27 
29 #define GEL_VADDR2VRELOC(f,a) ((a) + (f).base_vaddr)
30 
32 #define GEL_VRELOC2VADDR(f,a) ((a) - (f).base_vaddr)
33 
35 #define GEL_VADDR2RADDR(f,a) ((a) + (u8_t *)(f).base_raddr)
36 
38 #define GEL_RADDR2VADDR(f,a) ((u32_t)(a) - (f).base_raddr)
39 
41 #define GEL_VRELOC2RADDR(f,a) (VADDR2RADDR((f),VRELOC2VADDR((f),(a))))
42 
44 #define GEL_RADDR2VRELOC(f,a) (VADDR2VRELOC((f),RADDR2VADDR((f),(a))))
45 
46 
47 /* endianess management */
48 #define GEL_BIG_ENDIAN 2
49 #define GEL_LITTLE_ENDIAN 1
50 
51 
52 #define SWAP2(x) ((((x) & 0xFF) << 8) | (((x) & 0xFF00 ) >> 8))
53 #define SWAP4(x) ((((SWAP2((x) & 0xFFFF))) << 16) | SWAP2(((x) & 0xFFFF0000) >> 16))
54 
55 #ifdef WORDS_BIGENDIAN
56 #define ENDIAN2(e,v) (((e) == GEL_BIG_ENDIAN) ? (v) : SWAP2(v))
57 #define ENDIAN4(e,v) (((e) == GEL_BIG_ENDIAN) ? (v) : SWAP4(v))
58 #else
59 #define ENDIAN2(e,v) (((e) == GEL_LITTLE_ENDIAN) ? (v) : SWAP2(v))
60 #define ENDIAN4(e,v) (((e) == GEL_LITTLE_ENDIAN) ? (v) : SWAP4(v))
61 #endif
62 
64 
65 #endif /*GEL_PUBLIC_H_*/
#define __END_DECLS
Definition: common.h:29
#define __BEGIN_DECLS
Definition: common.h:28