| @@ -1,77 +1,77 @@ | | | @@ -1,77 +1,77 @@ |
1 | /* $NetBSD: reg.h,v 1.11 2014/08/12 20:27:10 joerg Exp $ */ | | 1 | /* $NetBSD: reg.h,v 1.12 2016/01/24 20:02:38 christos Exp $ */ |
2 | | | 2 | |
3 | #ifndef _POWERPC_REG_H_ | | 3 | #ifndef _POWERPC_REG_H_ |
4 | #define _POWERPC_REG_H_ | | 4 | #define _POWERPC_REG_H_ |
5 | | | 5 | |
6 | /* | | 6 | /* |
7 | * Register Usage according the SVR4 ABI for PPC. | | 7 | * Register Usage according the SVR4 ABI for PPC. |
8 | * | | 8 | * |
9 | * Register Usage | | 9 | * Register Usage |
10 | * r0 Volatile register which may be modified during function linkage | | 10 | * r0 Volatile register which may be modified during function linkage |
11 | * r1 Stack fram pointer, always valid | | 11 | * r1 Stack fram pointer, always valid |
12 | * r2 System-reserved register | | 12 | * r2 System-reserved register |
13 | * r3-r4 Volatile registers used for parameter passing and return values | | 13 | * r3-r4 Volatile registers used for parameter passing and return values |
14 | * r5-r10 Volatile registers used for parameter passing | | 14 | * r5-r10 Volatile registers used for parameter passing |
15 | * r11-r12 Volatile register which may be modified during function linkage | | 15 | * r11-r12 Volatile register which may be modified during function linkage |
16 | * r13 Small data area pointer register | | 16 | * r13 Small data area pointer register |
17 | * f0 Volatile register | | 17 | * f0 Volatile register |
18 | * f1 Volatile registers used for parameter passing and return values | | 18 | * f1 Volatile registers used for parameter passing and return values |
19 | * f2-f8 Volatile registers used for parameter passing | | 19 | * f2-f8 Volatile registers used for parameter passing |
20 | * f9-f13 Volatile registers | | 20 | * f9-f13 Volatile registers |
21 | * | | 21 | * |
22 | * [Start of callee-saved registers] | | 22 | * [Start of callee-saved registers] |
23 | * r14-r30 Registers used for local variables | | 23 | * r14-r30 Registers used for local variables |
24 | * r31 Used for local variable or "environent pointers" | | 24 | * r31 Used for local variable or "environent pointers" |
25 | * f14-f31 Registers used for local variables | | 25 | * f14-f31 Registers used for local variables |
26 | * | | 26 | * |
27 | * | | 27 | * |
28 | * Register Usage according the ELF64 ABI (PowerOpen/AIX) for PPC. | | 28 | * Register Usage according the ELF64 ABI (PowerOpen/AIX) for PPC. |
29 | * | | 29 | * |
30 | * Register Usage | | 30 | * Register Usage |
31 | * r0 Volatile register which may be modified during function linkage | | 31 | * r0 Volatile register which may be modified during function linkage |
32 | * r1 Stack fram pointer, always valid | | 32 | * r1 Stack fram pointer, always valid |
33 | * r2 TOC pointer | | 33 | * r2 TOC pointer |
34 | * r3 Volatile register used for parameter passing and return value | | 34 | * r3 Volatile register used for parameter passing and return value |
35 | * r4-r10 Volatile registers used for parameter passing | | 35 | * r4-r10 Volatile registers used for parameter passing |
36 | * r11 Volatile register used in calls by pointer and as an | | 36 | * r11 Volatile register used in calls by pointer and as an |
37 | * environment pointr for languages which require one | | 37 | * environment pointr for languages which require one |
38 | * r12 Volatile register used for exception handling and glink code | | 38 | * r12 Volatile register used for exception handling and glink code |
39 | * r13 Reserved for use as system thread ID | | 39 | * r13 Reserved for use as system thread ID |
40 | * | | 40 | * |
41 | * f0 Volatile register | | 41 | * f0 Volatile register |
42 | * f1-f4 Volatile registers used for parameter passing and return values | | 42 | * f1-f4 Volatile registers used for parameter passing and return values |
43 | * f5-f13 Volatile registers used for parameter passing | | 43 | * f5-f13 Volatile registers used for parameter passing |
44 | | | 44 | |
45 | * [Start of callee-saved registers] | | 45 | * [Start of callee-saved registers] |
46 | * r14-r31 Registers used for local variables | | 46 | * r14-r31 Registers used for local variables |
47 | * f14-f31 Registers used for local variables | | 47 | * f14-f31 Registers used for local variables |
48 | * | | 48 | * |
49 | */ | | 49 | */ |
50 | | | 50 | |
51 | struct reg { /* base registers */ | | 51 | struct reg { /* base registers */ |
52 | register_t fixreg[32]; | | 52 | __register_t fixreg[32]; |
53 | register_t lr; /* Link Register */ | | 53 | __register_t lr; /* Link Register */ |
54 | int cr; /* Condition Register */ | | 54 | int cr; /* Condition Register */ |
55 | int xer; /* SPR 1 */ | | 55 | int xer; /* SPR 1 */ |
56 | register_t ctr; /* Count Register */ | | 56 | __register_t ctr; /* Count Register */ |
57 | register_t pc; /* Program Counter */ | | 57 | __register_t pc; /* Program Counter */ |
58 | }; | | 58 | }; |
59 | | | 59 | |
60 | struct fpreg { /* Floating Point registers */ | | 60 | struct fpreg { /* Floating Point registers */ |
61 | #ifdef _KERNEL | | 61 | #ifdef _KERNEL |
62 | uint64_t fpreg[32]; | | 62 | uint64_t fpreg[32]; |
63 | uint64_t fpscr; /* Status and Control Register */ | | 63 | uint64_t fpscr; /* Status and Control Register */ |
64 | #else | | 64 | #else |
65 | double fpreg[32]; | | 65 | double fpreg[32]; |
66 | double fpscr; /* Status and Control Register */ | | 66 | double fpscr; /* Status and Control Register */ |
67 | #endif | | 67 | #endif |
68 | }; | | 68 | }; |
69 | | | 69 | |
70 | struct vreg { /* Vector registers */ | | 70 | struct vreg { /* Vector registers */ |
71 | uint32_t vreg[32][4]; | | 71 | uint32_t vreg[32][4]; |
72 | register_t vrsave; /* SPR 256 */ | | 72 | __register_t vrsave; /* SPR 256 */ |
73 | register_t spare[2]; /* filler */ | | 73 | __register_t spare[2]; /* filler */ |
74 | register_t vscr; /* Vector Status And Control Register */ | | 74 | __register_t vscr; /* Vector Status And Control Register */ |
75 | }; | | 75 | }; |
76 | | | 76 | |
77 | #endif /* _POWERPC_REG_H_ */ | | 77 | #endif /* _POWERPC_REG_H_ */ |