# HG changeset patch # User Michael Pavone # Date 1475631024 25200 # Node ID 329ff62ea3912307a753d67e6d0650cfea226bd2 # Parent c4bfbf55d418a7edb6333841f6f685bc07acf152 Add a new memory map flag to support an auxilliary buffer for translating code from MMAP_PTR_IDX chunks for which the pointer is null diff -r c4bfbf55d418 -r 329ff62ea391 backend.c --- a/backend.c Tue Oct 04 18:28:35 2016 -0700 +++ b/backend.c Tue Oct 04 18:30:24 2016 -0700 @@ -65,6 +65,9 @@ ? mem_pointers[memmap[chunk].ptr_index] : memmap[chunk].buffer; if (!base) { + if (memmap[chunk].flags & MMAP_AUX_BUFF) { + return memmap[chunk].buffer + (address & memmap[chunk].aux_mask); + } return NULL; } return base + (address & memmap[chunk].mask); diff -r c4bfbf55d418 -r 329ff62ea391 backend.h --- a/backend.h Tue Oct 04 18:28:35 2016 -0700 +++ b/backend.h Tue Oct 04 18:30:24 2016 -0700 @@ -55,6 +55,7 @@ #define MMAP_ONLY_EVEN 0x20 #define MMAP_FUNC_NULL 0x40 #define MMAP_BYTESWAP 0x80 +#define MMAP_AUX_BUFF 0x100 typedef uint16_t (*read_16_fun)(uint32_t address, void * context); typedef uint8_t (*read_8_fun)(uint32_t address, void * context); @@ -65,6 +66,7 @@ uint32_t start; uint32_t end; uint32_t mask; + uint32_t aux_mask; uint16_t ptr_index; uint16_t flags; void * buffer;