reg.h revision 1.7
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
32struct 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
41struct fpreg {				/* Floating Point registers */
42	double fpreg[32];
43	double fpscr;			/* Status and Control Register */
44};
45
46struct 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