1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-18 17:50:29 +02:00

ARM: Do not use ldrt/strt by default

* include/lightning/jit_arm.h, lib/jit_arm-cpu.c: Do not use
	by default load/store instructions that map to ldrt/strt.
	There is already the long displacement version for positive
	offsets, and when using a (shorter) negative offset it does
	not map to ldrt/strt. At least on qemu strt may cause
	reproducible, but unexpected SIGILL.
This commit is contained in:
pcpa 2013-10-08 12:26:52 -03:00
parent 72f3e65a6d
commit 2d4bac43a9
3 changed files with 23 additions and 8 deletions

View file

@ -28,6 +28,7 @@
*/
#define jit_swf_p() (jit_cpu.vfp == 0)
#define jit_hardfp_p() jit_cpu.abi
#define jit_ldrt_strt_p() jit_cpu.ldrt_strt
#define JIT_FP _R11
typedef enum {
@ -115,6 +116,11 @@ typedef struct {
jit_uint32_t vfp : 3;
jit_uint32_t neon : 1;
jit_uint32_t abi : 2;
/* use strt+offset instead of str.w?
* on special cases it causes a SIGILL at least on qemu, probably
* due to some memory ordering constraint not being respected, so,
* disable by default */
jit_uint32_t ldrt_strt : 1;
} jit_cpu_t;
typedef jit_int64_t jit_regset_t;