[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lightning] [BUG] [AMD64 ABI] %r12 not preserved and restored in tra
From: |
Paulo César Pereira de Andrade |
Subject: |
Re: [Lightning] [BUG] [AMD64 ABI] %r12 not preserved and restored in trampoline function prolog/epilog |
Date: |
Mon, 16 Sep 2019 12:05:14 -0300 |
Em qui, 12 de set de 2019 às 04:01, Marc Nieper-Wißkirchen
<address@hidden> escreveu:
>
> P.S.: Here is another version of the patch (diff vs the current GIT
> version), which makes R12 into the new JIT_V4.
>
> diff --git a/include/lightning/jit_x86.h b/include/lightning/jit_x86.h
> index 3350021..a28e375 100644
> --- a/include/lightning/jit_x86.h
> +++ b/include/lightning/jit_x86.h
> @@ -117,21 +117,21 @@ typedef enum {
> # define jit_sse_reg_p(reg) ((reg) >= _XMM4 && (reg) <= _XMM0)
> # else
> # define jit_r(i) (_RAX + (i))
> -# define jit_r_num() 4
> +# define jit_r_num() 3
> # define jit_v(i) (_RBX + (i))
> -# define jit_v_num() 4
> +# define jit_v_num() 5
> # define jit_f(index) (_XMM8 + (index))
> # define jit_f_num() 8
> # define JIT_R0 _RAX
> # define JIT_R1 _R10
> # define JIT_R2 _R11
> -# define JIT_R3 _R12
> - _RAX, _R10, _R11, _R12,
> + _RAX, _R10, _R11,
> # define JIT_V0 _RBX
> # define JIT_V1 _R13
> # define JIT_V2 _R14
> # define JIT_V3 _R15
> - _RBX, _R13, _R14, _R15,
> +# define JIT_V4 _R12
> + _RBX, _R13, _R14, _R15, _R12,
> _R9, _R8, _RCX, _RDX, _RSI, _RDI,
> _RSP, _RBP,
> # define JIT_F0 _XMM8
> diff --git a/lib/jit_x86.c b/lib/jit_x86.c
> index aae796b..592610f 100644
> --- a/lib/jit_x86.c
> +++ b/lib/jit_x86.c
> @@ -185,11 +185,11 @@ jit_register_t _rvs[] = {
> { rc(arg) | rc(gpr) | rc(rg8) | 0, "%rax" },
> { rc(gpr) | rc(rg8) | 10, "%r10" },
> { rc(gpr) | rc(rg8) | 11, "%r11" },
> - { rc(gpr) | rc(rg8) | 12, "%r12" },
> { rc(sav) | rc(rg8) | rc(gpr) | 3, "%rbx" },
> { rc(sav) | rc(rg8) | rc(gpr) | 13, "%r13" },
> { rc(sav) | rc(rg8) | rc(gpr) | 14, "%r14" },
> { rc(sav) | rc(rg8) | rc(gpr) | 15, "%r15" },
> + { rc(sav) | rc(rg8) | rc(gpr) | 12, "%r12" },
> { rc(arg) | rc(rg8) | rc(gpr) | 9, "%r9" },
> { rc(arg) | rc(rg8) | rc(gpr) | 8, "%r8" },
> { rc(arg) | rc(rg8) | rc(gpr) | 1, "%rcx" },
Commited and pushed.
Thanks!
Paulo