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:
parent
97f69a9c9c
commit
316dfc6e5e
3 changed files with 8 additions and 5 deletions
|
@ -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>
|
2015-06-24 Paulo Andrade <pcpa@gnu.org>
|
||||||
|
|
||||||
* check/lightning.c: Clearly run check if clang is the system
|
* check/lightning.c: Clearly run check if clang is the system
|
||||||
|
|
|
@ -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));
|
ldxi(rn(rg0), r1, offsetof(jit_va_list_t, stack));
|
||||||
|
|
||||||
/* Load argument. */
|
/* Load argument. */
|
||||||
ldr(r0, rn(rg0));
|
ldr_d(r0, rn(rg0));
|
||||||
|
|
||||||
/* Update stack pointer. */
|
/* Update stack pointer. */
|
||||||
addi(rn(rg0), rn(rg0), 8);
|
addi(rn(rg0), rn(rg0), 8);
|
||||||
|
|
|
@ -27,9 +27,7 @@ typedef struct jit_qreg {
|
||||||
jit_float64_t h;
|
jit_float64_t h;
|
||||||
} jit_qreg_t;
|
} jit_qreg_t;
|
||||||
|
|
||||||
#define va_gp_min_offset -64
|
|
||||||
#define va_gp_top_offset offsetof(jit_va_list_t, q0)
|
#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)
|
#define va_fp_top_offset sizeof(jit_va_list_t)
|
||||||
typedef struct jit_va_list {
|
typedef struct jit_va_list {
|
||||||
jit_pointer_t stack;
|
jit_pointer_t stack;
|
||||||
|
@ -340,13 +338,13 @@ _jit_ellipsis(jit_state_t *_jit)
|
||||||
if (jit_arg_reg_p(_jitc->function->self.argi))
|
if (jit_arg_reg_p(_jitc->function->self.argi))
|
||||||
_jitc->function->vagp = (8 - _jitc->function->self.argi) * -8;
|
_jitc->function->vagp = (8 - _jitc->function->self.argi) * -8;
|
||||||
else
|
else
|
||||||
_jitc->function->vagp = va_gp_min_offset;
|
_jitc->function->vagp = 0;
|
||||||
|
|
||||||
/* Initialize fp offset in save area. */
|
/* Initialize fp offset in save area. */
|
||||||
if (jit_arg_f_reg_p(_jitc->function->self.argf))
|
if (jit_arg_f_reg_p(_jitc->function->self.argf))
|
||||||
_jitc->function->vafp = (8 - _jitc->function->self.argf) * -16;
|
_jitc->function->vafp = (8 - _jitc->function->self.argf) * -16;
|
||||||
else
|
else
|
||||||
_jitc->function->vafp = va_fp_min_offset;
|
_jitc->function->vafp = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue