xref: /netbsd/sys/arch/powerpc/include/reg.h (revision bf9ec67e)
1 /*	$NetBSD: reg.h,v 1.7 2002/04/18 20:08:10 matt Exp $	*/
2 
3 #ifndef _POWERPC_REG_H_
4 #define _POWERPC_REG_H_
5 
6 /*
7  *  Register Usage according the SVR4 ABI for PPC.
8  *
9  *  Register Name	Usage
10  *  r0			Volatile register which may be modified during
11  *			function linkage
12  *  r1			Stack fram pointer, always valid
13  *  r2			System-reserved register
14  *  r3-r4		Volatile registers used for parameter passing and
15  *			return values
16  *  r5-r10		Volatile registers used for parameter passing
17  *  r11-r12		Volatile register which may be modified during
18  *			function linkage
19  *  [Start of callee-saved registers]
20  *  r13			Small data area pointer register
21  *  r14-r30		Registers used for local variables
22  *  r31			Used for local variable or "environent pointers"
23  *
24  *  f0			Volatile register
25  *  f1			Volatile registers used for parameter passing and
26  *			return values
27  *  f2-f8		Volatile registers used for parameter passing
28  *  f9-f13		Volatile registers
29  *  f14-f31		Registers used for local variables
30  */
31 
32 struct reg {				/* base registers */
33 	register_t fixreg[32];
34 	register_t lr;			/* Link Register */
35 	int cr;				/* Condition Register */
36 	int xer;			/* SPR 1 */
37 	register_t ctr;			/* Count Register */
38 	register_t pc;			/* Program Counter */
39 };
40 
41 struct fpreg {				/* Floating Point registers */
42 	double fpreg[32];
43 	double fpscr;			/* Status and Control Register */
44 };
45 
46 struct vreg {				/* Vector registers */
47 	u_int32_t vreg[32][4];
48 	register_t vscr;		/* Vector Status And Control Register */
49 	register_t vrsave;		/* SPR 256 */
50 };
51 
52 #endif /* _POWERPC_REG_H_ */
53