aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/new_dynarec/linkage_arm.S
diff options
context:
space:
mode:
authornotaz2016-09-19 02:40:17 +0300
committernotaz2016-09-19 02:43:55 +0300
commitd148d26560527efdd71685df8eac0497827ca766 (patch)
tree46a2775848ca37860515062b3a383632ae0acb2b /libpcsxcore/new_dynarec/linkage_arm.S
parent1fedf1ea555e4a6be68dd0ba384909ac21da65d0 (diff)
downloadpcsx_rearmed-d148d26560527efdd71685df8eac0497827ca766.tar.gz
pcsx_rearmed-d148d26560527efdd71685df8eac0497827ca766.tar.bz2
pcsx_rearmed-d148d26560527efdd71685df8eac0497827ca766.zip
drc: try to support w^x platforms like iOS
untested...
Diffstat (limited to 'libpcsxcore/new_dynarec/linkage_arm.S')
-rw-r--r--libpcsxcore/new_dynarec/linkage_arm.S11
1 files changed, 9 insertions, 2 deletions
diff --git a/libpcsxcore/new_dynarec/linkage_arm.S b/libpcsxcore/new_dynarec/linkage_arm.S
index 95af8b4..147b0df 100644
--- a/libpcsxcore/new_dynarec/linkage_arm.S
+++ b/libpcsxcore/new_dynarec/linkage_arm.S
@@ -20,6 +20,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "arm_features.h"
+#include "new_dynarec_config.h"
#include "linkage_offsets.h"
@@ -160,9 +161,10 @@ ptr_hash_table:
#endif
.endm
+/* r0 = virtual target address */
+/* r1 = instruction to patch */
.macro dyna_linker_main
- /* r0 = virtual target address */
- /* r1 = instruction to patch */
+#ifndef NO_WRITE_EXEC
load_varadr_ext r3, jump_in
/* get_page */
lsr r2, r0, #12
@@ -242,6 +244,11 @@ ptr_hash_table:
str r3, [r6, #12]
mov pc, r1
8:
+#else
+ /* XXX: should be able to do better than this... */
+ bl get_addr_ht
+ mov pc, r0
+#endif
.endm