mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-20 18:50:21 +02:00
Adapt PowerPC port to work in Darwin 32 bit and Linux 64 bit.
* include/lightning.h: Add check for __powerpc__ defined in Linux, while Darwin defines __ppc__. * include/lightning/jit_ppc.h: Adjust register definitions for Darwin 32 bit and Linux 64 bit ppc usage and/or ABI. * include/lightning/jit_private.h: Add proper check for Linux __powerpc__ and an data definition for an workaround to properly handle code that starts with a jump to a "main" label. * lib/jit_disasm.c: Add extra disassembler initialization for __powerpc64__. * lib/jit_ppc-cpu.c: Add extra macros and functions, and correct/adapt previous ones to handle powerpc64. * lib/jit_ppc-fpu.c: Adapt for 64 bit wordsize. Basically add conversion from/to int32/int64 and proper handling of load/store offsets too large for 32 bit. * lib/jit_ppc.c: Add calls to 64 bit codes and adaptation for the PowerPC 64 bit Linux ABI. * lib/jit_arm.c, lib/jit_mips.c, lib/jit_sparc, lib/jit_x86.c, lib/lightning.c: Correct off by one error when restarting jit of a function due to finding too late that needs to spill/reload some register. Problem was found by accident on a very special condition during PowerPC 64 code adaptation.
This commit is contained in:
parent
19123bae5d
commit
7ef8060fb2
13 changed files with 1038 additions and 123 deletions
|
@ -1186,6 +1186,7 @@ _emit_code(jit_state_t *_jit)
|
|||
temp->code == jit_code_epilog)
|
||||
temp->flag &= ~jit_flag_patch;
|
||||
}
|
||||
temp->flag &= ~jit_flag_patch;
|
||||
node = undo.node;
|
||||
_jit->pc.w = undo.word;
|
||||
_jitc->patches.offset = undo.patch_offset;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue