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
attempt to improve guncon defaults
[pcsx_rearmed.git]
/
libpcsxcore
/
new_dynarec
/
linkage_arm.S
diff --git
a/libpcsxcore/new_dynarec/linkage_arm.S
b/libpcsxcore/new_dynarec/linkage_arm.S
index
a7f4d79
..
d2d6d87
100644
(file)
--- a/
libpcsxcore/new_dynarec/linkage_arm.S
+++ b/
libpcsxcore/new_dynarec/linkage_arm.S
@@
-239,10
+239,9
@@
FUNCTION(cc_interrupt):
add r10, r0, r10
str r1, [fp, #LO_pending_exception]
str r10, [fp, #LO_cycle] /* PCSX cycles */
add r10, r0, r10
str r1, [fp, #LO_pending_exception]
str r10, [fp, #LO_cycle] /* PCSX cycles */
-@@ str r10, [fp, #LO_reg_cop0+36] /* Count - not on PSX */
mov r10, lr
mov r10, lr
- add r0, fp, #
(LO_psxRegs + 34*4)
/* CP0 */
+ add r0, fp, #
LO_reg_cop0
/* CP0 */
bl gen_interupt
mov lr, r10
ldr r10, [fp, #LO_cycle]
bl gen_interupt
mov lr, r10
ldr r10, [fp, #LO_cycle]
@@
-298,17
+297,20
@@
call_psxException:
str r2, [fp, #LO_pcaddr]
add r10, r3, r10
str r10, [fp, #LO_cycle] /* PCSX cycles */
str r2, [fp, #LO_pcaddr]
add r10, r3, r10
str r10, [fp, #LO_cycle] /* PCSX cycles */
- add r2, fp, #
(LO_psxRegs + 34*4)
/* CP0 */
+ add r2, fp, #
LO_reg_cop0
/* CP0 */
bl psxException
/* note: psxException might do recursive recompiler call from it's HLE code,
* so be ready for this */
FUNCTION(jump_to_new_pc):
bl psxException
/* note: psxException might do recursive recompiler call from it's HLE code,
* so be ready for this */
FUNCTION(jump_to_new_pc):
+ ldr r2, [fp, #LO_stop]
ldr r1, [fp, #LO_next_interupt]
ldr r10, [fp, #LO_cycle]
ldr r0, [fp, #LO_pcaddr]
ldr r1, [fp, #LO_next_interupt]
ldr r10, [fp, #LO_cycle]
ldr r0, [fp, #LO_pcaddr]
- sub r10, r10, r1
+ tst r2, r2
str r1, [fp, #LO_last_count]
str r1, [fp, #LO_last_count]
+ sub r10, r10, r1
+ bne new_dyna_leave
bl ndrc_get_addr_ht
mov pc, r0
.size jump_to_new_pc, .-jump_to_new_pc
bl ndrc_get_addr_ht
mov pc, r0
.size jump_to_new_pc, .-jump_to_new_pc
@@
-518,7
+520,7
@@
FUNCTION(jump_handle_swl):
mov r12,r0,lsr #12
ldr r3, [r3, r12, lsl #2]
lsls r3, #1
mov r12,r0,lsr #12
ldr r3, [r3, r12, lsl #2]
lsls r3, #1
- bcs
4f
+ bcs
jump_handle_swx_interp
add r3, r0, r3
mov r0, r2
tst r3, #2
add r3, r0, r3
mov r0, r2
tst r3, #2
@@
-541,11
+543,6
@@
FUNCTION(jump_handle_swl):
strhne r1, [r3, #-1]
strbeq r12, [r3]
bx lr
strhne r1, [r3, #-1]
strbeq r12, [r3]
bx lr
-4:
- mov r0, r2
-@ b abort
- bx lr @ TODO?
-
FUNCTION(jump_handle_swr):
/* r0 = address, r1 = data, r2 = cycles */
FUNCTION(jump_handle_swr):
/* r0 = address, r1 = data, r2 = cycles */
@@
-553,7
+550,7
@@
FUNCTION(jump_handle_swr):
mov r12,r0,lsr #12
ldr r3, [r3, r12, lsl #2]
lsls r3, #1
mov r12,r0,lsr #12
ldr r3, [r3, r12, lsl #2]
lsls r3, #1
- bcs
4f
+ bcs
jump_handle_swx_interp
add r3, r0, r3
and r12,r3, #3
mov r0, r2
add r3, r0, r3
and r12,r3, #3
mov r0, r2
@@
-567,11
+564,14
@@
FUNCTION(jump_handle_swr):
strb r1, [r3]
strh r2, [r3, #1]
bx lr
strb r1, [r3]
strh r2, [r3, #1]
bx lr
-4:
- mov r0, r2
-@ b abort
- bx lr @ TODO?
+jump_handle_swx_interp: /* almost never happens */
+ ldr r3, [fp, #LO_last_count]
+ add r0, fp, #LO_psxRegs
+ add r2, r3, r2
+ str r2, [fp, #LO_cycle] /* PCSX cycles */
+ bl execI
+ b jump_to_new_pc
.macro rcntx_read_mode0 num
/* r0 = address, r2 = cycles */
.macro rcntx_read_mode0 num
/* r0 = address, r2 = cycles */