Mercurial > repos > blastem
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); |