diff runtime.S @ 343:467bfa17004a

Mostly working runtime generation of memory map read/write functions
author Mike Pavone <pavone@retrodev.com>
date Sat, 18 May 2013 11:44:42 -0700
parents 146c87616b05
children b46771135442
line wrap: on
line diff
--- a/runtime.S	Thu May 16 09:37:53 2013 -0700
+++ b/runtime.S	Sat May 18 11:44:42 2013 -0700
@@ -5,12 +5,16 @@
 	cmp 84(%rsi), %eax
 	jb skip_sync
 do_sync:
+	push %rcx
+	push %rdi
 	call m68k_save_context
 	mov %rsi, %rdi
 	xor %esi, %esi
 	call sync_components
 	mov %rax, %rsi
 	call m68k_load_context
+	pop %rdi
+	pop %rcx
 skip_sync:
 	ret
 
@@ -271,10 +275,11 @@
 do_vdp_port_read:
 	mov %ecx, %edi
 	call m68k_save_context
+	push %rsi
 	call vdp_port_read
-	mov %rax, %rsi
+	pop %rsi
+	mov %ax, %cx
 	call m68k_load_context
-	mov 136(%rsi), %cx
 	ret
 	
 do_io_write:
@@ -289,10 +294,11 @@
 	mov %ecx, %edi
 	and $0x1FFFF, %edi
 	call m68k_save_context
+	push %rsi
 	call io_read
-	mov %rax, %rsi
+	pop %rsi
+	mov %al, %cl
 	call m68k_load_context
-	mov 136(%rsi), %cl
 	ret
 
 do_io_write_w:
@@ -307,10 +313,11 @@
 	mov %ecx, %edi
 	and $0x1FFFF, %edi
 	call m68k_save_context
+	push %rsi
 	call io_read_w
-	mov %rax, %rsi
+	pop %rsi
+	mov %ax, %cx
 	call m68k_load_context
-	mov 136(%rsi), %cx
 	ret
 	
 bad_access_msg:
@@ -479,8 +486,7 @@
 	add $4, %eax
 	ret
 do_limit:
-	push %rcx
-	push %rdi
+	
 	call handle_cycle_limit
 	pop %rdi
 	pop %rcx