1 /* $NetBSD: reg.h,v 1.8 2002/07/05 18:45:21 matt Exp $ */
3 #ifndef _POWERPC_REG_H_
4 #define _POWERPC_REG_H_
7 * Register Usage according the SVR4 ABI for PPC.
10 * r0 Volatile register which may be modified during function linkage
11 * r1 Stack fram pointer, always valid
12 * r2 System-reserved register
13 * r3-r4 Volatile registers used for parameter passing and return values
14 * r5-r10 Volatile registers used for parameter passing
15 * r11-r12 Volatile register which may be modified during function linkage
16 * r13 Small data area pointer register
17 * f0 Volatile register
18 * f1 Volatile registers used for parameter passing and return values
19 * f2-f8 Volatile registers used for parameter passing
20 * f9-f13 Volatile registers
22 * [Start of callee-saved registers]
23 * r14-r30 Registers used for local variables
24 * r31 Used for local variable or "environent pointers"
25 * f14-f31 Registers used for local variables
28 * Register Usage according the ELF64 ABI (PowerOpen/AIX) for PPC.
31 * r0 Volatile register which may be modified during function linkage
32 * r1 Stack fram pointer, always valid
34 * r3 Volatile register used for parameter passing and return value
35 * r4-r10 Volatile registers used for parameter passing
36 * r11 Volatile register used in calls by pointer and as an
37 * environment pointr for languages which require one
38 * r12 Volatile register used for exception handling and glink code
39 * r13 Reserved for use as system thread ID
41 * f0 Volatile register
42 * f1-f4 Volatile registers used for parameter passing and return values
43 * f5-f13 Volatile registers used for parameter passing
45 * [Start of callee-saved registers]
46 * r14-r31 Registers used for local variables
47 * f14-f31 Registers used for local variables
51 struct reg
{ /* base registers */
52 register_t fixreg
[32];
53 register_t lr
; /* Link Register */
54 int cr
; /* Condition Register */
56 register_t ctr
; /* Count Register */
57 register_t pc
; /* Program Counter */
60 struct fpreg
{ /* Floating Point registers */
62 double fpscr
; /* Status and Control Register */
65 struct vreg
{ /* Vector registers */
66 u_int32_t vreg
[32][4];
67 register_t vrsave
; /* SPR 256 */
68 register_t spare
[2]; /* filler */
69 register_t vscr
; /* Vector Status And Control Register */
72 #endif /* _POWERPC_REG_H_ */