notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rework memhandlers to deal with some bus details
[pcsx_rearmed.git]
/
libpcsxcore
/
new_dynarec
/
linkage_arm64.S
diff --git
a/libpcsxcore/new_dynarec/linkage_arm64.S
b/libpcsxcore/new_dynarec/linkage_arm64.S
index
3519dff
..
fa8a411
100644
(file)
--- a/
libpcsxcore/new_dynarec/linkage_arm64.S
+++ b/
libpcsxcore/new_dynarec/linkage_arm64.S
@@
-227,10
+227,11
@@
FUNCTION(new_dyna_leave):
.endm
.macro memhandler_post
.endm
.macro memhandler_post
- ldr w0, [rFP, #LO_next_interupt]
+ /* w2 = cycles_out, x3 = tmp */
+ ldr w3, [rFP, #LO_next_interupt]
ldr w2, [rFP, #LO_cycle] // memhandlers can modify cc, like dma
ldr w2, [rFP, #LO_cycle] // memhandlers can modify cc, like dma
- str w
0
, [rFP, #LO_last_count]
- sub w
0, w2, w0
+ str w
3
, [rFP, #LO_last_count]
+ sub w
2, w2, w3
.endm
FUNCTION(do_memhandler_pre):
.endm
FUNCTION(do_memhandler_pre):
@@
-258,17
+259,18
@@
FUNCTION(do_memhandler_post):
FUNCTION(jump_handler_read8):
add x1, x1, #0x1000/4*8 + 0x1000/2*8 /* shift to r8 part */
pcsx_read_mem ldrb, 0
FUNCTION(jump_handler_read8):
add x1, x1, #0x1000/4*8 + 0x1000/2*8 /* shift to r8 part */
pcsx_read_mem ldrb, 0
- b handler_read_end
+ ldp xzr, x30, [sp], #16
+ ret
FUNCTION(jump_handler_read16):
add x1, x1, #0x1000/4*8 /* shift to r16 part */
pcsx_read_mem ldrh, 1
FUNCTION(jump_handler_read16):
add x1, x1, #0x1000/4*8 /* shift to r16 part */
pcsx_read_mem ldrh, 1
- b handler_read_end
+ ldp xzr, x30, [sp], #16
+ ret
FUNCTION(jump_handler_read32):
pcsx_read_mem ldr, 2
FUNCTION(jump_handler_read32):
pcsx_read_mem ldr, 2
-
-handler_read_end:
+ /* memhandler_post */
ldp xzr, x30, [sp], #16
ret
ldp xzr, x30, [sp], #16
ret
@@
-278,7
+280,6
@@
handler_read_end:
ldr x3, [x3, w4, uxtw #3]
adds x3, x3, x3
bcs 0f
ldr x3, [x3, w4, uxtw #3]
adds x3, x3, x3
bcs 0f
- mov w0, w2 /* cycle return */
\wrtop w1, [x3, w4, uxtw #\tab_shift]
ret
0:
\wrtop w1, [x3, w4, uxtw #\tab_shift]
ret
0: