Mercurial > repos > blastem
diff 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 |
line wrap: on
line diff
--- a/x86_backend.h Thu May 16 09:37:53 2013 -0700 +++ b/x86_backend.h Sat May 18 11:44:42 2013 -0700 @@ -25,6 +25,30 @@ uint32_t address; } deferred_addr; + +#define MMAP_READ 0x1 +#define MMAP_WRITE 0x2 +#define MMAP_CODE 0x4 +#define MMAP_PTR_IDX 0x8 + +typedef uint16_t (*read_16_fun)(uint32_t address, void * context); +typedef uint8_t (*read_8_fun)(uint32_t address, void * context); +typedef void * (*write_16_fun)(uint32_t address, void * context, uint16_t value); +typedef void * (*write_8_fun)(uint32_t address, void * context, uint8_t value); + +typedef struct { + uint32_t start; + uint32_t end; + uint32_t mask; + uint16_t ptr_index; + uint16_t flags; + void * buffer; + read_16_fun read_16; + write_16_fun write_16; + read_8_fun read_8; + write_8_fun write_8; +} memmap_chunk; + typedef uint8_t * (*native_addr_func)(void * context, uint32_t address); deferred_addr * defer_address(deferred_addr * old_head, uint32_t address, uint8_t *dest);