summaryrefslogtreecommitdiff
path: root/x86_backend.h
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2013-05-18 11:44:42 -0700
committerMike Pavone <pavone@retrodev.com>2013-05-18 11:44:42 -0700
commitf9358846fe3544430748a623c00b5bb6e6a87e2c (patch)
tree7dbb007ad5a79b94226777fe731bf39d65dbcb5b /x86_backend.h
parent12399f80ac7cfef5a44d1760e9e2d581ae6b0be2 (diff)
Mostly working runtime generation of memory map read/write functions
Diffstat (limited to 'x86_backend.h')
-rw-r--r--x86_backend.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/x86_backend.h b/x86_backend.h
index f29200c..35f4494 100644
--- a/x86_backend.h
+++ b/x86_backend.h
@@ -25,6 +25,30 @@ typedef struct deferred_addr {
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);