shithub: purgatorio

ref: f8935b5778397074d41a48205e5c7f87d7b531fe
dir: /NetBSD/power/include/emu.h/

View raw version
/*
 * system- and machine-specific declarations for emu:
 * floating-point save and restore, signal handling primitive, and
 * implementation of the current-process variable `up'.
 */

/*
 * This structure must agree with FPsave and FPrestore asm routines
 */
typedef struct FPU FPU;
struct FPU
{
	uchar	env[18*8];
};

#define KSTACK (32 * 1024)

static __inline Proc *getup(void) {
	Proc *p;
	__asm__(	"mr	%0, 1" : "=r" (p));
	return *(Proc **)((unsigned long)p & ~(KSTACK - 1));
};

#define	up	(getup())

typedef sigjmp_buf osjmpbuf;
#define	ossetjmp(buf)	sigsetjmp(buf, 1)