diff 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
line wrap: on
line diff
--- a/backend.h	Fri Mar 07 21:45:53 2025 -0800
+++ b/backend.h	Fri Mar 07 23:40:58 2025 -0800
@@ -86,6 +86,11 @@
 
 typedef uint8_t * (*native_addr_func)(void * context, uint32_t address);
 
+typedef uint16_t (*interp_read_16)(uint32_t address, void *context, void *data);
+typedef uint8_t (*interp_read_8)(uint32_t address, void *context, void *data);
+typedef void (*interp_write_16)(uint32_t address, void *context, uint16_t value, void *data);
+typedef void (*interp_write_8)(uint32_t address, void *context, uint8_t value, void *data);
+
 deferred_addr * defer_address(deferred_addr * old_head, uint32_t address, uint8_t *dest);
 void remove_deferred_until(deferred_addr **head_ptr, deferred_addr * remove_to);
 void process_deferred(deferred_addr ** head_ptr, void * context, native_addr_func get_native);
@@ -110,6 +115,10 @@
 memmap_chunk const *find_map_chunk(uint32_t address, cpu_options *opts, uint16_t flags, uint32_t *size_sum);
 uint32_t chunk_size(cpu_options *opts, memmap_chunk const *chunk);
 uint32_t ram_size(cpu_options *opts);
+interp_read_16 get_interp_read_16(void *context, cpu_options *opts, uint32_t start, uint32_t end, void **data_out);
+interp_read_8 get_interp_read_8(void *context, cpu_options *opts, uint32_t start, uint32_t end, void **data_out);
+interp_write_16 get_interp_write_16(void *context, cpu_options *opts, uint32_t start, uint32_t end, void **data_out);
+interp_write_8 get_interp_write_8(void *context, cpu_options *opts, uint32_t start, uint32_t end, void **data_out);
 
 #endif //BACKEND_H_