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