mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-04 11:10:27 +02:00
Correct wrong test and update of arm thumb offset information.
* lib/jit_arm-cpu.c, lib/jit_arm.c: Correct wrong test and update of the thumb offset information, when checking if needing to patch a jump from arm to thumb mode. The problem would happen when remapping the code buffer, and the new address being lower than the previous one.
This commit is contained in:
parent
ba182b139a
commit
b8770059dc
3 changed files with 10 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
|||
2013-08-29 Paulo Andrade <pcpa@gnu.org>
|
||||
|
||||
* lib/jit_arm-cpu.c, lib/jit_arm.c: Correct wrong test and update
|
||||
of the thumb offset information, when checking if needing to
|
||||
patch a jump from arm to thumb mode. The problem would happen when
|
||||
remapping the code buffer, and the new address being lower than
|
||||
the previous one.
|
||||
|
||||
2013-08-26 Paulo Andrade <pcpa@gnu.org>
|
||||
|
||||
* configure.ac: Extend FreeBSD test to also handle NetBSD.
|
||||
|
|
|
@ -3755,7 +3755,7 @@ _patch_at(jit_state_t *_jit,
|
|||
} u;
|
||||
u.w = instr;
|
||||
if (kind == arm_patch_jump) {
|
||||
if (jit_thumb_p() && instr >= _jitc->thumb) {
|
||||
if (jit_thumb_p() && (jit_uword_t)instr >= _jitc->thumb) {
|
||||
code2thumb(thumb.s[0], thumb.s[1], u.s[0], u.s[1]);
|
||||
if ((thumb.i & THUMB2_B) == THUMB2_B) {
|
||||
d = ((label - instr) >> 1) - 2;
|
||||
|
|
|
@ -810,6 +810,7 @@ _emit_code(jit_state_t *_jit)
|
|||
} undo;
|
||||
|
||||
_jitc->function = NULL;
|
||||
_jitc->thumb = 0;
|
||||
|
||||
jit_reglive_setup();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue