1 /*
2 * UAE - The Un*x Amiga Emulator
3 *
4 * Memory access functions
5 *
6 * Copyright 1996 Bernd Schmidt
7 */
8
do_get_mem_long(uint32_t * a)9 static __inline__ uint32_t do_get_mem_long(uint32_t *a)
10 {
11 uint8_t *b = (uint8_t *)a;
12
13 return (*b << 24) | (*(b+1) << 16) | (*(b+2) << 8) | (*(b+3));
14 }
15
do_get_mem_word(uint16_t * a)16 static __inline__ uint16_t do_get_mem_word(uint16_t *a)
17 {
18 uint8_t *b = (uint8_t *)a;
19
20 return (*b << 8) | (*(b+1));
21 }
22
do_get_mem_byte(uint8_t * a)23 static __inline__ uint8_t do_get_mem_byte(uint8_t *a)
24 {
25 return *a;
26 }
27
do_put_mem_long(uint32_t * a,uint32_t v)28 static __inline__ void do_put_mem_long(uint32_t *a, uint32_t v)
29 {
30 uint8_t *b = (uint8_t *)a;
31
32 *b = v >> 24;
33 *(b+1) = v >> 16;
34 *(b+2) = v >> 8;
35 *(b+3) = v;
36 }
37
do_put_mem_word(uint16_t * a,uint16_t v)38 static __inline__ void do_put_mem_word(uint16_t *a, uint16_t v)
39 {
40 uint8_t *b = (uint8_t *)a;
41
42 *b = v >> 8;
43 *(b+1) = v;
44 }
45
do_put_mem_byte(uint8_t * a,uint8_t v)46 static __inline__ void do_put_mem_byte(uint8_t *a, uint8_t v)
47 {
48 *a = v;
49 }
50
51 #define ALIGN_POINTER_TO32(p) ((~(unsigned long)(p)) & 3)
52
53 #define call_mem_get_func(func, addr) ((*func)(addr))
54 #define call_mem_put_func(func, addr, v) ((*func)(addr, v))
55
56 #undef USE_MAPPED_MEMORY
57 #undef CAN_MAP_MEMORY
58 #undef NO_INLINE_MEMORY_ACCESS
59 #undef MD_HAVE_MEM_1_FUNCS
60