Mercurial > repos > blastem
comparison backend.h @ 987:1f09994e92c5
Initial stab at implementing address error exceptions. Need to fill in the value of IR, undefined bits of last stack frame word and properly deal with address errors that occur during exception processing.
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 26 Apr 2016 23:13:37 -0700 |
parents | 7f96bd1cb1be |
children | 6b07af1515b5 |
comparison
equal
deleted
inserted
replaced
986:f680fe746a7d | 987:1f09994e92c5 |
---|---|
84 code_ptr save_context; | 84 code_ptr save_context; |
85 code_ptr load_context; | 85 code_ptr load_context; |
86 code_ptr handle_cycle_limit; | 86 code_ptr handle_cycle_limit; |
87 code_ptr handle_cycle_limit_int; | 87 code_ptr handle_cycle_limit_int; |
88 code_ptr handle_code_write; | 88 code_ptr handle_code_write; |
89 code_ptr handle_align_error_write; | |
90 code_ptr handle_align_error_read; | |
89 uint32_t memmap_chunks; | 91 uint32_t memmap_chunks; |
90 uint32_t address_mask; | 92 uint32_t address_mask; |
91 uint32_t max_address; | 93 uint32_t max_address; |
92 uint32_t bus_cycles; | 94 uint32_t bus_cycles; |
93 uint32_t clock_divider; | 95 uint32_t clock_divider; |
99 uint8_t context_reg; | 101 uint8_t context_reg; |
100 uint8_t cycles; | 102 uint8_t cycles; |
101 uint8_t limit; | 103 uint8_t limit; |
102 uint8_t scratch1; | 104 uint8_t scratch1; |
103 uint8_t scratch2; | 105 uint8_t scratch2; |
106 uint8_t align_error_mask; | |
104 } cpu_options; | 107 } cpu_options; |
105 | 108 |
106 typedef uint8_t * (*native_addr_func)(void * context, uint32_t address); | 109 typedef uint8_t * (*native_addr_func)(void * context, uint32_t address); |
107 | 110 |
108 deferred_addr * defer_address(deferred_addr * old_head, uint32_t address, uint8_t *dest); | 111 deferred_addr * defer_address(deferred_addr * old_head, uint32_t address, uint8_t *dest); |