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:
parent
72f3e65a6d
commit
2d4bac43a9
3 changed files with 23 additions and 8 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue