1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-09 13:30:26 +02:00

aarch64: Correct va_list offsets and double load.

* lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: Correct base
	aarch64 varargs code.
This commit is contained in:
pcpa 2015-05-24 14:34:16 -03:00
parent 97f69a9c9c
commit 316dfc6e5e
3 changed files with 8 additions and 5 deletions

View file

@ -1,3 +1,8 @@
2015-06-24 Paulo Andrade <pcpa@gnu.org>
* lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: Correct base
aarch64 varargs code.
2015-06-24 Paulo Andrade <pcpa@gnu.org>
* check/lightning.c: Clearly run check if clang is the system

View file

@ -900,7 +900,7 @@ _vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
ldxi(rn(rg0), r1, offsetof(jit_va_list_t, stack));
/* Load argument. */
ldr(r0, rn(rg0));
ldr_d(r0, rn(rg0));
/* Update stack pointer. */
addi(rn(rg0), rn(rg0), 8);

View file

@ -27,9 +27,7 @@ typedef struct jit_qreg {
jit_float64_t h;
} jit_qreg_t;
#define va_gp_min_offset -64
#define va_gp_top_offset offsetof(jit_va_list_t, q0)
#define va_fp_min_offset -128
#define va_fp_top_offset sizeof(jit_va_list_t)
typedef struct jit_va_list {
jit_pointer_t stack;
@ -340,13 +338,13 @@ _jit_ellipsis(jit_state_t *_jit)
if (jit_arg_reg_p(_jitc->function->self.argi))
_jitc->function->vagp = (8 - _jitc->function->self.argi) * -8;
else
_jitc->function->vagp = va_gp_min_offset;
_jitc->function->vagp = 0;
/* Initialize fp offset in save area. */
if (jit_arg_f_reg_p(_jitc->function->self.argf))
_jitc->function->vafp = (8 - _jitc->function->self.argf) * -16;
else
_jitc->function->vafp = va_fp_min_offset;
_jitc->function->vafp = 0;
}
}