aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/new_dynarec/linkage_arm.s
diff options
context:
space:
mode:
authornotaz2011-07-31 23:50:19 +0300
committernotaz2011-08-01 23:32:21 +0300
commitf968d35dc0302f3fb7fba5a1bafb5feed1f758f6 (patch)
tree0a9ff0e2abb86149d1deeb10c7192809455a636d /libpcsxcore/new_dynarec/linkage_arm.s
parentb17618c006c1a79ea0aa38c5e452a384f7f2bc95 (diff)
downloadpcsx_rearmed-f968d35dc0302f3fb7fba5a1bafb5feed1f758f6.tar.gz
pcsx_rearmed-f968d35dc0302f3fb7fba5a1bafb5feed1f758f6.tar.bz2
pcsx_rearmed-f968d35dc0302f3fb7fba5a1bafb5feed1f758f6.zip
drc: fix page get code in linkage_arm.s
it did not match what was used elsewhere for PCSX, causing rare crashes due to making bad links.. Also comment get_pointer, it's not obvious what it does.
Diffstat (limited to 'libpcsxcore/new_dynarec/linkage_arm.s')
-rw-r--r--libpcsxcore/new_dynarec/linkage_arm.s24
1 files changed, 14 insertions, 10 deletions
diff --git a/libpcsxcore/new_dynarec/linkage_arm.s b/libpcsxcore/new_dynarec/linkage_arm.s
index 6107e27..b22d491 100644
--- a/libpcsxcore/new_dynarec/linkage_arm.s
+++ b/libpcsxcore/new_dynarec/linkage_arm.s
@@ -219,14 +219,16 @@ dynarec_local_end = memory_map + 4194304
dyna_linker:
/* r0 = virtual target address */
/* r1 = instruction to patch */
- mov r12, r0
- mov r6, #4096
- mov r2, #0x80000
ldr r3, .jiptr
+ /* get_page */
+ lsr r2, r0, #12
+ mov r6, #4096
+ bic r2, r2, #0xe0000
sub r6, r6, #1
+ cmp r2, #0x1000
ldr r7, [r1]
- eor r2, r2, r12, lsr #12
- and r6, r6, r12, lsr #12
+ biclt r2, #0x0e00
+ and r6, r6, r2
cmp r2, #2048
add r12, r7, #2
orrcs r2, r6, #2048
@@ -337,14 +339,16 @@ exec_pagefault:
dyna_linker_ds:
/* r0 = virtual target address */
/* r1 = instruction to patch */
- mov r12, r0
- mov r6, #4096
- mov r2, #0x80000
ldr r3, .jiptr
+ /* get_page */
+ lsr r2, r0, #12
+ mov r6, #4096
+ bic r2, r2, #0xe0000
sub r6, r6, #1
+ cmp r2, #0x1000
ldr r7, [r1]
- eor r2, r2, r12, lsr #12
- and r6, r6, r12, lsr #12
+ biclt r2, #0x0e00
+ and r6, r6, r2
cmp r2, #2048
add r12, r7, #2
orrcs r2, r6, #2048