mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-22 03:30:22 +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
|
@ -81,6 +81,12 @@ jit_init_debug(void)
|
|||
if (jit_cpu.thumb)
|
||||
disasm_info.disassembler_options = "force-thumb";
|
||||
# endif
|
||||
# if defined(__powerpc64__)
|
||||
disasm_info.arch = bfd_arch_powerpc;
|
||||
disasm_info.mach = bfd_mach_ppc64;
|
||||
disasm_info.disassembler_options = "64";
|
||||
disassemble_init_powerpc(&disasm_info);
|
||||
# endif
|
||||
# if defined(__sparc__)
|
||||
disasm_info.endian = disasm_info.display_endian = BFD_ENDIAN_BIG;
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue