1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-04 05:50:26 +02:00

ARM: Do not limit to 24 bit displacement jump to unknown address

* lib/jit_arm-cpu.c, lib/jit_arm.c: Only limit to 24 bit
	displacement non conditional jump in the same jit_state_t.
This commit is contained in:
Paulo Andrade 2015-01-31 15:59:25 -02:00
parent 894a02412c
commit 6db38b75e9
3 changed files with 46 additions and 28 deletions

View file

@ -1555,7 +1555,8 @@ _emit_code(jit_state_t *_jit)
if (temp->flag & jit_flag_patch)
jmpi(temp->u.w);
else {
word = jmpi_p(_jit->pc.w);
word = jmpi_p(_jit->pc.w,
!!(node->flag & jit_flag_node));
patch(word, node);
}
}
@ -2002,7 +2003,8 @@ _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
}
else {
flag = node->u.n->flag;
if (node->code == jit_code_calli)
if (node->code == jit_code_calli ||
(node->code == jit_code_jmpi && !(node->flag & jit_flag_node)))
kind = arm_patch_word;
else
kind = arm_patch_jump;