Home | History | Annotate | Line # | Download | only in include
      1 /*	$NetBSD: mcontext.h,v 1.16 2024/11/30 01:04:09 christos Exp $	*/
      2 
      3 #ifndef _HPPA_MCONTEXT_H_
      4 #define	_HPPA_MCONTEXT_H_
      5 
      6 /*
      7  * General register state
      8  */
      9 #define	_NGREG		44
     10 
     11 #define _REG_R1		1
     12 #define _REG_R2		2
     13 #define _REG_R3		3
     14 #define _REG_R4		4
     15 #define _REG_R5		5
     16 #define _REG_R6		6
     17 #define _REG_R7		7
     18 #define _REG_R8		8
     19 #define _REG_R9		9
     20 #define _REG_R10	10
     21 #define _REG_R11	11
     22 #define _REG_R12	12
     23 #define _REG_R13	13
     24 #define _REG_R14	14
     25 #define _REG_R15	15
     26 #define _REG_R16	16
     27 #define _REG_R17	17
     28 #define _REG_R18	18
     29 #define _REG_R19	19
     30 #define _REG_R20	20
     31 #define _REG_R21	21
     32 #define _REG_R22	22
     33 #define _REG_R23	23
     34 #define _REG_R24	24
     35 #define _REG_R25	25
     36 #define _REG_R26	26
     37 #define _REG_R27	27
     38 #define _REG_R28	28
     39 #define _REG_R29	29
     40 #define _REG_R30	30
     41 #define _REG_R31	31
     42 
     43 #define	_REG_PSW	0
     44 #define	_REG_RP		2
     45 #define	_REG_R19	19
     46 #define	_REG_ARG0	26
     47 #define	_REG_DP		27
     48 #define	_REG_RET0	28
     49 #define	_REG_SP		30
     50 #define	_REG_SAR	32
     51 #define	_REG_PCSQH	33
     52 #define	_REG_PCSQT	34
     53 #define	_REG_PCOQH	35
     54 #define	_REG_PCOQT	36
     55 #define	_REG_SR0	37
     56 #define	_REG_SR1	38
     57 #define	_REG_SR2	39
     58 #define	_REG_SR3	40
     59 #define	_REG_SR4	41
     60 #define	_REG_CR26	42
     61 #define	_REG_CR27	43
     62 
     63 #ifndef __ASSEMBLER__
     64 
     65 typedef	unsigned long	__greg_t;
     66 typedef	__greg_t	__gregset_t[_NGREG];
     67 
     68 /*
     69  * Floating point register state
     70  */
     71 
     72 typedef struct {
     73 	union {
     74 		unsigned long long	__fp_regs[32];
     75 		double			__fp_dregs[32];
     76 	}	__fp_fr;
     77 } __fpregset_t;
     78 
     79 typedef struct {
     80 	__gregset_t	__gregs;
     81 	__fpregset_t	__fpregs;
     82 } mcontext_t;
     83 
     84 #define	_UC_MACHINE_SP(uc)	((uc)->uc_mcontext.__gregs[_REG_SP])
     85 #define	_UC_MACHINE_FP(uc)	((uc)->uc_mcontext.__gregs[3])
     86 #define	_UC_MACHINE_PC(uc) 	((uc)->uc_mcontext.__gregs[_REG_PCOQH])
     87 #define	_UC_MACHINE_SET_PC(uc, pc)					\
     88 do {									\
     89 	(uc)->uc_mcontext.__gregs[_REG_PCOQH] = (pc);			\
     90 	(uc)->uc_mcontext.__gregs[_REG_PCOQT] = (pc) + 4;		\
     91 } while (/*CONSTCOND*/0)
     92 #define	_UC_MACHINE_INTRV(uc) 	((uc)->uc_mcontext.__gregs[_REG_RET0])
     93 
     94 #endif /* !__ASSEMBLER__ */
     95 
     96 #define	_UC_SETSTACK	_UC_MD_BIT16
     97 #define	_UC_CLRSTACK	_UC_MD_BIT17
     98 #define	_UC_TLSBASE	_UC_MD_BIT18
     99 
    100 #endif /* _HPPA_MCONTEXT_H_ */
    101