lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/lib/jit_arm-cpu.c
diff options
context:
space:
mode:
authorpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2014年11月20日 15:05:13 -0200
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2014年11月20日 15:05:13 -0200
commit3f397228f5f1f27f3a8a264530a11895fbc9fb79 (patch)
tree20dc64e5c09586197a1738c66cbc8c943e1840e4 /lib/jit_arm-cpu.c
parent7b449aa0638b978c6a551edf35611beefeaf9f14 (diff)
downloadlightning-3f397228f5f1f27f3a8a264530a11895fbc9fb79.tar.gz
ARM: Correct several inconsistencies with ldrd and strd
* lib/jit_disasm.c: Change thumb or arm disassemble based on jit code before disassembly. * lib/jit_arm-cpu.c: Correct reversed arguments to LDRD and STRD instructions, and correct checking for support of those. * lib/jit_arm-swf.c: Correct wrong use of LDRD and STRD and only use those if the register is even. * check/check.arm.swf.sh, check/check.arm4.swf.sh: New files to test LDRD and STRD, as well as the alternate code path when those are not available, in the .arm4. test case. * check/Makefile.am: Update for the new test cases.
Diffstat (limited to 'lib/jit_arm-cpu.c')
-rw-r--r--lib/jit_arm-cpu.c 8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/jit_arm-cpu.c b/lib/jit_arm-cpu.c
index 552bce3..aabccef 100644
--- a/lib/jit_arm-cpu.c
+++ b/lib/jit_arm-cpu.c
@@ -31,7 +31,7 @@
# define jit_thumb_p() jit_cpu.thumb
# define jit_no_set_flags() _jitc->no_set_flags
# define jit_armv5_p() (jit_cpu.version >= 5)
-# define jit_armv5e_p() (jit_cpu.version >= 5 && jit_cpu.extend)
+# define jit_armv5e_p() (jit_cpu.version > 5 || (jit_cpu.version == 5 && jit_cpu.extend))
# define jit_armv6_p() (jit_cpu.version >= 6)
# define jit_armv7r_p() 0
# define stack_framesize 48
@@ -709,9 +709,9 @@ static void _torl(jit_state_t*,int,int,int) maybe_unused;
# define LDRD(rt,rn,rm) CC_LDRD(ARM_CC_AL,rt,rn,rm)
# define T2_LDRDI(rt,rt2,rn,im) torrri8(THUMB2_LDRDI|ARM_P,rn,rt,rt2,im)
# define CC_LDRDN(cc,rt,rn,rm) corrr(cc,ARM_LDRD,rn,rt,rm)
-# define LDRDN(rd,rn,rm) CC_LDRDN(ARM_CC_AL,rn,rt,rm)
+# define LDRDN(rd,rn,rm) CC_LDRDN(ARM_CC_AL,rt,rn,rm)
# define CC_LDRDI(cc,rt,rn,im) corri8(cc,ARM_LDRDI|ARM_P,rn,rt,im)
-# define LDRDI(rt,rn,im) CC_LDRDI(ARM_CC_AL,rn,rt,im)
+# define LDRDI(rt,rn,im) CC_LDRDI(ARM_CC_AL,rt,rn,im)
# define CC_LDRDIN(cc,rt,rn,im) corri8(cc,ARM_LDRDI,rn,rt,im)
# define LDRDIN(rt,rn,im) CC_LDRDIN(ARM_CC_AL,rt,rn,im)
# define T2_LDRDIN(rt,rt2,rn,im) torrri8(THUMB2_LDRDI,rn,rt,rt2,im)
@@ -758,7 +758,7 @@ static void _torl(jit_state_t*,int,int,int) maybe_unused;
# define CC_STRIN(cc,rt,rn,im) corri(cc,ARM_STRI,rn,rt,im)
# define STRIN(rt,rn,im) CC_STRIN(ARM_CC_AL,rt,rn,im)
# define T2_STRIN(rt,rn,im) torri8(THUMB2_STRI,rn,rt,im)
-# define CC_STRD(cc,rt,rn,rm) corrr(cc,ARM_STRD|ARM_P,rt,rn,rm)
+# define CC_STRD(cc,rt,rn,rm) corrr(cc,ARM_STRD|ARM_P,rn,rt,rm)
# define STRD(rt,rn,rm) CC_STRD(ARM_CC_AL,rt,rn,rm)
# define CC_STRDN(cc,rt,rn,rm) corrr(cc,ARM_STRD,rn,rt,rm)
# define STRDN(rt,rn,rm) CC_STRDN(ARM_CC_AL,rt,rn,rm)
generated by cgit v1.2.3 (git 2.25.1) at 2025年09月12日 23:15:59 +0000

AltStyle によって変換されたページ (->オリジナル) /