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