29 #define GEL_ALIGN(v, n) (((v) + (n) - 1) & ~((n) - 1))
30 #define GEL_ALIGNP(t, p, n) ((t *)GEL_ALIGN((intptr_t)(p), (n)))
43 #define gel_cursor_at_end(c) ((c).cur_addr >= (c).base_addr + (c).size)
44 #define gel_cursor_avail(c) ((c).base_addr + (c).size - (c).cur_addr)
45 #define gel_cursor_align(c, n) (c).cur_addr = GEL_ALIGNP(u8_t, (c).cur_addr, (n))
46 #define gel_cursor_reset(c) { (c).cur_addr = (c).base_addr; }
47 #define gel_cursor_vaddr(c) ((c).vaddr + (c).cur_addr - (c).base_addr)
48 #define gel_cursor_offset(c) ((c).cur_addr - (c).base_addr)
50 #define gel_read_u8(c) ((c).cur_addr += 1 , *((u8_t*)((c).cur_addr - 1)))
51 #define gel_read_s8(c) ((c).cur_addr += 1 , *((s8_t*)((c).cur_addr - 1)))
52 #define gel_read_u16(c) ((c).cur_addr += 2, ENDIAN2((c).endianness, (*((u16_t*)((c).cur_addr - 2)))))
53 #define gel_read_s16(c) ((c).cur_addr += 2, ENDIAN2((c).endianness, (*((s16_t*)((c).cur_addr - 2)))))
54 #define gel_read_u32(c) ((c).cur_addr += 4, ENDIAN4((c).endianness, (*((u32_t*)((c).cur_addr - 4)))))
55 #define gel_read_s32(c) ((c).cur_addr += 4, ENDIAN4((c).endianness, (*((s32_t*)((c).cur_addr - 4)))))
56 #define gel_read_vaddr(c) ((c).cur_addr += 4, ENDIAN4((c).endianness, (*((vaddr_t*)((c).cur_addr - 4)))))
57 #define gel_read_raddr(c) ((c).cur_addr += 4, ENDIAN4((c).endianness, (*((raddr_t*)((c).cur_addr - 4)))))
58 #define gel_read_data(c, b, s) { memcpy((b), (c).cur_addr, (s)); (c).cur_addr += (s); }
60 #define gel_write_u8(c,v) {*((u8_t*)((c).cur_addr)) = (v) ; (c).cur_addr += 1; } while (0)
61 #define gel_write_s8(c,v) {*((s8_t*)((c).cur_addr)) = (v) ; (c).cur_addr += 1; } while (0)
62 #define gel_write_u16(c,v) {*((u16_t*)((c).cur_addr)) = ENDIAN2((c).endianness,(v)) ; (c).cur_addr += 2; } while (0)
63 #define gel_write_s16(c,v) {*((s16_t*)((c).cur_addr)) = ENDIAN2((c).endianness,(v)) ; (c).cur_addr += 2; } while (0)
64 #define gel_write_u32(c,v) {*((u32_t*)((c).cur_addr)) = ENDIAN4((c).endianness,(v)) ; (c).cur_addr += 4; } while (0)
65 #define gel_write_s32(c,v) {*((s32_t*)((c).cur_addr)) = ENDIAN4((c).endianness,(v)) ; (c).cur_addr += 4; } while (0)
66 #define gel_write_vaddr(c,v) {*((vaddr_t*)((c).cur_addr)) = ENDIAN4((c).endianness,(v)) ; (c).cur_addr += 4; } while (0)
67 #define gel_write_raddr(c,v) {*((raddr_t*)((c).cur_addr)) = ENDIAN4((c).endianness,(v)) ; (c).cur_addr += 4; } while (0)
68 #define gel_write_data(c, b, s) \
69 { assert((c).cur_addr + (s) < (c).base_addr + (c).size); \
70 memcpy((c).cur_addr, (b), (s)); (c).cur_addr += (s); }
#define __END_DECLS
Definition: common.h:29
#define __BEGIN_DECLS
Definition: common.h:28
int gel_cursor_bounds(gel_cursor_t *p)
Definition: gel_cursor.c:188
int gel_write_block(gel_cursor_t *bc, char *blk, int blksize, raddr_t dest)
Definition: gel_cursor.c:211
int gel_read_block(gel_cursor_t *bc, char *blk, int blksize, raddr_t src)
Definition: gel_cursor.c:248
void gel_align_hi(gel_cursor_t *p)
Definition: gel_cursor.c:280
int gel_move_abs(gel_cursor_t *p, raddr_t addr)
Definition: gel_cursor.c:148
int gel_move(gel_cursor_t *p, u32_t off)
Definition: gel_cursor.c:134
void gel_align_lo(gel_cursor_t *p)
Definition: gel_cursor.c:304
int gel_subcursor(gel_cursor_t *base, size_t size, gel_cursor_t *sub)
Definition: gel_cursor.c:503
struct gel_cursor_s gel_cursor_t
int gel_move_rel(gel_cursor_t *p, s32_t off)
Definition: gel_cursor.c:162
raddr_t gel_cursor_addr(gel_cursor_t *c)
Definition: gel_cursor.c:176
int gel_block2cursor(gel_block_t *f, gel_cursor_t *c)
Definition: gel_cursor.c:86
typedef__BEGIN_DECLS struct gel_sect_s gel_sect_t
Definition: sect.h:31
int gel_sect2cursor(gel_sect_t *p, gel_cursor_t *c)
Definition: gel_cursor.c:107
Definition: gel_types_plugin.h:74
gel_platform_t * plat
Definition: cursor.h:38
int endianness
Definition: cursor.h:36
u8_t * base_addr
Definition: cursor.h:33
vaddr_t vaddr
Definition: cursor.h:37
u8_t * cur_addr
Definition: cursor.h:34
u32_t size
Definition: cursor.h:35
int32_t s32_t
Definition: types.h:33
uint32_t u32_t
Definition: types.h:32
uint8_t u8_t
Definition: types.h:34
uint32_t vaddr_t
Definition: types.h:36
void * raddr_t
Definition: types.h:37