mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-20 18:50:21 +02:00
Build and pass all test cases on a multiprocessor HP-UX.
* configure.ac, check/Makefile.am, doc/Makefile.am: Do not explicitly link to -ldl, but instead autodetect the library with dlopen, dlsym, etc. * check/lightning.c: Add workaround to apparently buggy getopt in HP-UX that sets optind to the wrong index, and use RTLD_NEXT on HP-UX instead of RTLD_DEFAULT to dlsym global symbols. * include/lightning.h: Rework definitions of wordsize and byte order to detect proper values on HP-UX. * lib/lightning.c: Minor correction to use MAP_ANONYMOUS instead of MAP_ANON on HP-UX. * lib/jit_hppa.c: Float arguments must be passed on integer registers on HP-UX, not only for varargs functions. Add code to properly clear instruction cache. This was not required on Debian hppa port, but may have been working by accident. * lib/jit_hppa-cpu.c: Follow pattern of HP-UX binaries and use bve,n instead of bv,n to return from functions. * lib/jit_hppa-fpu.c: For some reason "fst? frX,rX,(rY)" did not work on the tested computer (HP-UX B.11.23 U 9000/785 HP-UX) so the code was changed, at first for __hpux only to add the base and offset register and use the instruction with an immediate (zero) offset.
This commit is contained in:
parent
3e5a12f747
commit
e82e5be448
10 changed files with 244 additions and 30 deletions
|
@ -322,6 +322,7 @@ static void _f38(jit_state_t*,jit_int32_t,
|
|||
#define BV(x,b) f21(0x3a,b,x,6,0)
|
||||
#define BV_N(x,b) f21(0x3a,b,x,6,1)
|
||||
#define BVE(b) f22(0x3a,b,6,0,0,0)
|
||||
#define BVE_N(b) f22(0x3a,b,6,0,1,0)
|
||||
#define BVE_L(b) f22(0x3a,b,7,0,0,0)
|
||||
#define II_C_NONE 0
|
||||
#define II_C_M (1<<5)
|
||||
|
@ -2652,7 +2653,11 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
|
|||
LDWL(-20, _FP_REGNO, _RP_REGNO);
|
||||
LDO(_jitc->function->stack, _FP_REGNO, _SP_REGNO);
|
||||
LDWL_MB(-_jitc->function->stack, _SP_REGNO, _FP_REGNO);
|
||||
#if defined(__hpux)
|
||||
BVE_N(_RP_REGNO);
|
||||
#else
|
||||
BV_N(_R0_REGNO, _RP_REGNO);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue