1 #ifndef _QEMU_YAGL_MEM_H
2 #define _QEMU_YAGL_MEM_H
4 #include "yagl_types.h"
5 #include "yagl_mem_transfer.h"
7 bool yagl_mem_get_uint8(struct yagl_thread_state *ts, target_ulong va, uint8_t* value);
9 bool yagl_mem_get_uint16(struct yagl_thread_state *ts, target_ulong va, uint16_t* value);
11 bool yagl_mem_get_uint32(struct yagl_thread_state *ts, target_ulong va, uint32_t* value);
13 bool yagl_mem_get_float(struct yagl_thread_state *ts, target_ulong va, float* value);
15 bool yagl_mem_get(struct yagl_thread_state *ts, target_ulong va, uint32_t len, void* data);
17 typedef bool (*yagl_mem_array_cb)(const void */*el*/, void */*user_data*/);
20 * Efficiently reads an array from target memory. It'll continue reading until
21 * 'cb' returns false. Note that 'el_size' must be <= TARGET_PAGE_SIZE
22 * in order for this function to work.
24 bool yagl_mem_get_array(struct yagl_thread_state *ts,
30 char *yagl_mem_get_string(struct yagl_thread_state *ts, target_ulong va);
32 #define yagl_mem_prepare_char(mt, va) yagl_mem_prepare_uint8((mt), (va))
33 #define yagl_mem_put_char(mt, value) yagl_mem_put_uint8((mt), (uint8_t)(value))
34 #define yagl_mem_get_char(ts, va, value) yagl_mem_get_uint8((ts), (va), (uint8_t*)(value))
35 #define yagl_mem_prepare_int8(mt, va) yagl_mem_prepare_uint8((mt), (va))
36 #define yagl_mem_put_int8(mt, value) yagl_mem_put_uint8((mt), (uint8_t)(value))
37 #define yagl_mem_get_int8(ts, va, value) yagl_mem_get_uint8((ts), (va), (uint8_t*)(value))
38 #define yagl_mem_prepare_int16(mt, va) yagl_mem_prepare_uint16((mt), (va))
39 #define yagl_mem_put_int16(mt, value) yagl_mem_put_uint16((mt), (uint16_t)(value))
40 #define yagl_mem_get_int16(ts, va, value) yagl_mem_get_uint16((ts), (va), (uint16_t*)(value))
41 #define yagl_mem_prepare_int32(mt, va) yagl_mem_prepare_uint32((mt), (va))
42 #define yagl_mem_put_int32(mt, value) yagl_mem_put_uint32((mt), (uint32_t)(value))
43 #define yagl_mem_get_int32(ts, va, value) yagl_mem_get_uint32((ts), (va), (uint32_t*)(value))
44 #define yagl_mem_prepare_host_handle(mt, va) yagl_mem_prepare_uint32((mt), (va))
45 #define yagl_mem_put_host_handle(mt, value) yagl_mem_put_uint32((mt), (value))
46 #define yagl_mem_get_host_handle(ts, va, value) yagl_mem_get_uint32((ts), (va), (value))
48 #if TARGET_LONG_SIZE == 4
49 #define yagl_mem_prepare_ptr(mt, va) yagl_mem_prepare_uint32((mt), (va))
50 #define yagl_mem_put_ptr(mt, value) yagl_mem_put_uint32((mt), (value))
52 #error 64-bit ptr not supported