Mercurial > repos > blastem
comparison backend.h @ 2666:38c281ef57b0
Memory access optimizaiton in new 68K core that gives a modest speed bump on average and will allow low-cost watchpoints
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 07 Mar 2025 23:40:58 -0800 |
parents | bf4f1a8d1d48 |
children | 7e86ec94c899 |
comparison
equal
deleted
inserted
replaced
2665:54ac5fe14cf9 | 2666:38c281ef57b0 |
---|---|
84 uint8_t align_error_mask; | 84 uint8_t align_error_mask; |
85 } cpu_options; | 85 } cpu_options; |
86 | 86 |
87 typedef uint8_t * (*native_addr_func)(void * context, uint32_t address); | 87 typedef uint8_t * (*native_addr_func)(void * context, uint32_t address); |
88 | 88 |
89 typedef uint16_t (*interp_read_16)(uint32_t address, void *context, void *data); | |
90 typedef uint8_t (*interp_read_8)(uint32_t address, void *context, void *data); | |
91 typedef void (*interp_write_16)(uint32_t address, void *context, uint16_t value, void *data); | |
92 typedef void (*interp_write_8)(uint32_t address, void *context, uint8_t value, void *data); | |
93 | |
89 deferred_addr * defer_address(deferred_addr * old_head, uint32_t address, uint8_t *dest); | 94 deferred_addr * defer_address(deferred_addr * old_head, uint32_t address, uint8_t *dest); |
90 void remove_deferred_until(deferred_addr **head_ptr, deferred_addr * remove_to); | 95 void remove_deferred_until(deferred_addr **head_ptr, deferred_addr * remove_to); |
91 void process_deferred(deferred_addr ** head_ptr, void * context, native_addr_func get_native); | 96 void process_deferred(deferred_addr ** head_ptr, void * context, native_addr_func get_native); |
92 | 97 |
93 void cycles(cpu_options *opts, uint32_t num); | 98 void cycles(cpu_options *opts, uint32_t num); |
108 uint8_t read_byte(uint32_t address, void **mem_pointers, cpu_options *opts, void *context); | 113 uint8_t read_byte(uint32_t address, void **mem_pointers, cpu_options *opts, void *context); |
109 void write_byte(uint32_t address, uint8_t value, void **mem_pointers, cpu_options *opts, void *context); | 114 void write_byte(uint32_t address, uint8_t value, void **mem_pointers, cpu_options *opts, void *context); |
110 memmap_chunk const *find_map_chunk(uint32_t address, cpu_options *opts, uint16_t flags, uint32_t *size_sum); | 115 memmap_chunk const *find_map_chunk(uint32_t address, cpu_options *opts, uint16_t flags, uint32_t *size_sum); |
111 uint32_t chunk_size(cpu_options *opts, memmap_chunk const *chunk); | 116 uint32_t chunk_size(cpu_options *opts, memmap_chunk const *chunk); |
112 uint32_t ram_size(cpu_options *opts); | 117 uint32_t ram_size(cpu_options *opts); |
118 interp_read_16 get_interp_read_16(void *context, cpu_options *opts, uint32_t start, uint32_t end, void **data_out); | |
119 interp_read_8 get_interp_read_8(void *context, cpu_options *opts, uint32_t start, uint32_t end, void **data_out); | |
120 interp_write_16 get_interp_write_16(void *context, cpu_options *opts, uint32_t start, uint32_t end, void **data_out); | |
121 interp_write_8 get_interp_write_8(void *context, cpu_options *opts, uint32_t start, uint32_t end, void **data_out); | |
113 | 122 |
114 #endif //BACKEND_H_ | 123 #endif //BACKEND_H_ |
115 | 124 |