1
Fork 0
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:
pcpa 2013-06-09 18:31:50 -03:00
parent 3e5a12f747
commit e82e5be448
10 changed files with 244 additions and 30 deletions

View file

@ -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