comparison x86_backend.h @ 343:467bfa17004a

Mostly working runtime generation of memory map read/write functions
author Mike Pavone <pavone@retrodev.com>
date Sat, 18 May 2013 11:44:42 -0700
parents 7b8a49220e3b
children 2f264d2a60c2
comparison
equal deleted inserted replaced
342:13f994c88c34 343:467bfa17004a
23 struct deferred_addr *next; 23 struct deferred_addr *next;
24 uint8_t *dest; 24 uint8_t *dest;
25 uint32_t address; 25 uint32_t address;
26 } deferred_addr; 26 } deferred_addr;
27 27
28
29 #define MMAP_READ 0x1
30 #define MMAP_WRITE 0x2
31 #define MMAP_CODE 0x4
32 #define MMAP_PTR_IDX 0x8
33
34 typedef uint16_t (*read_16_fun)(uint32_t address, void * context);
35 typedef uint8_t (*read_8_fun)(uint32_t address, void * context);
36 typedef void * (*write_16_fun)(uint32_t address, void * context, uint16_t value);
37 typedef void * (*write_8_fun)(uint32_t address, void * context, uint8_t value);
38
39 typedef struct {
40 uint32_t start;
41 uint32_t end;
42 uint32_t mask;
43 uint16_t ptr_index;
44 uint16_t flags;
45 void * buffer;
46 read_16_fun read_16;
47 write_16_fun write_16;
48 read_8_fun read_8;
49 write_8_fun write_8;
50 } memmap_chunk;
51
28 typedef uint8_t * (*native_addr_func)(void * context, uint32_t address); 52 typedef uint8_t * (*native_addr_func)(void * context, uint32_t address);
29 53
30 deferred_addr * defer_address(deferred_addr * old_head, uint32_t address, uint8_t *dest); 54 deferred_addr * defer_address(deferred_addr * old_head, uint32_t address, uint8_t *dest);
31 void remove_deferred_until(deferred_addr **head_ptr, deferred_addr * remove_to); 55 void remove_deferred_until(deferred_addr **head_ptr, deferred_addr * remove_to);
32 void process_deferred(deferred_addr ** head_ptr, void * context, native_addr_func get_native); 56 void process_deferred(deferred_addr ** head_ptr, void * context, native_addr_func get_native);