83 static LIR_Opr R11_oop_opr;
84 static LIR_Opr R12_oop_opr;
85 //R13: System thread register. Not usable.
86 static LIR_Opr R14_oop_opr;
87 static LIR_Opr R15_oop_opr;
88 //R16: Java thread register. Not an oop.
89 static LIR_Opr R17_oop_opr;
90 static LIR_Opr R18_oop_opr;
91 static LIR_Opr R19_oop_opr;
92 static LIR_Opr R20_oop_opr;
93 static LIR_Opr R21_oop_opr;
94 static LIR_Opr R22_oop_opr;
95 static LIR_Opr R23_oop_opr;
96 static LIR_Opr R24_oop_opr;
97 static LIR_Opr R25_oop_opr;
98 static LIR_Opr R26_oop_opr;
99 static LIR_Opr R27_oop_opr;
100 static LIR_Opr R28_oop_opr;
101 static LIR_Opr R29_oop_opr;
102 //R29: TOC register. Not an oop.
103 static LIR_Opr R30_oop_opr;
104 static LIR_Opr R31_oop_opr;
105
106 static LIR_Opr R0_metadata_opr;
107 //R1: Stack pointer. Not metadata.
108 static LIR_Opr R2_metadata_opr;
109 static LIR_Opr R3_metadata_opr;
110 static LIR_Opr R4_metadata_opr;
111 static LIR_Opr R5_metadata_opr;
112 static LIR_Opr R6_metadata_opr;
113 static LIR_Opr R7_metadata_opr;
114 static LIR_Opr R8_metadata_opr;
115 static LIR_Opr R9_metadata_opr;
116 static LIR_Opr R10_metadata_opr;
117 static LIR_Opr R11_metadata_opr;
118 static LIR_Opr R12_metadata_opr;
119 //R13: System thread register. Not usable.
120 static LIR_Opr R14_metadata_opr;
121 static LIR_Opr R15_metadata_opr;
122 //R16: Java thread register. Not metadata.
123 static LIR_Opr R17_metadata_opr;
124 static LIR_Opr R18_metadata_opr;
125 static LIR_Opr R19_metadata_opr;
126 static LIR_Opr R20_metadata_opr;
127 static LIR_Opr R21_metadata_opr;
128 static LIR_Opr R22_metadata_opr;
129 static LIR_Opr R23_metadata_opr;
130 static LIR_Opr R24_metadata_opr;
131 static LIR_Opr R25_metadata_opr;
132 static LIR_Opr R26_metadata_opr;
133 static LIR_Opr R27_metadata_opr;
134 static LIR_Opr R28_metadata_opr;
135 //R29: TOC register. Not metadata.
136 static LIR_Opr R30_metadata_opr;
137 static LIR_Opr R31_metadata_opr;
138
139 static LIR_Opr SP_opr;
140
141 static LIR_Opr R0_long_opr;
142 static LIR_Opr R3_long_opr;
143
144 static LIR_Opr F1_opr;
145 static LIR_Opr F1_double_opr;
146
147 private:
148 static FloatRegister _fpu_regs [nof_fpu_regs];
149
150 static LIR_Opr as_long_single_opr(Register r) {
151 return LIR_OprFact::double_cpu(cpu_reg2rnr(r), cpu_reg2rnr(r));
152 }
153 static LIR_Opr as_long_pair_opr(Register r) {
154 return LIR_OprFact::double_cpu(cpu_reg2rnr(r->successor()), cpu_reg2rnr(r));
155 }
156
180 return LIR_OprFact::double_fpu(r->encoding());
181 }
182
183 static FloatRegister nr2floatreg (int rnr);
184
185 static VMReg fpu_regname (int n);
186
187 static bool is_caller_save_register(LIR_Opr reg);
188 static bool is_caller_save_register(Register r);
189
190 static int nof_caller_save_cpu_regs() { return pd_nof_caller_save_cpu_regs_frame_map; }
191 static int last_cpu_reg() { return pd_last_cpu_reg; }
192
193 // Registers which need to be saved in the frames (e.g. for GC).
194 // Register usage:
195 // R0: scratch
196 // R1: sp
197 // R13: system thread id
198 // R16: java thread
199 // R29: global TOC
200 static bool reg_needs_save(Register r) { return r != R0 && r != R1 && r != R13 && r != R16 && r != R29; }
201
202 #endif // CPU_PPC_VM_C1_FRAMEMAP_PPC_HPP
|
83 static LIR_Opr R11_oop_opr;
84 static LIR_Opr R12_oop_opr;
85 //R13: System thread register. Not usable.
86 static LIR_Opr R14_oop_opr;
87 static LIR_Opr R15_oop_opr;
88 //R16: Java thread register. Not an oop.
89 static LIR_Opr R17_oop_opr;
90 static LIR_Opr R18_oop_opr;
91 static LIR_Opr R19_oop_opr;
92 static LIR_Opr R20_oop_opr;
93 static LIR_Opr R21_oop_opr;
94 static LIR_Opr R22_oop_opr;
95 static LIR_Opr R23_oop_opr;
96 static LIR_Opr R24_oop_opr;
97 static LIR_Opr R25_oop_opr;
98 static LIR_Opr R26_oop_opr;
99 static LIR_Opr R27_oop_opr;
100 static LIR_Opr R28_oop_opr;
101 static LIR_Opr R29_oop_opr;
102 //R29: TOC register. Not an oop.
103 //R30: R30_zero. Not an oop.
104 static LIR_Opr R31_oop_opr;
105
106 static LIR_Opr R0_metadata_opr;
107 //R1: Stack pointer. Not metadata.
108 static LIR_Opr R2_metadata_opr;
109 static LIR_Opr R3_metadata_opr;
110 static LIR_Opr R4_metadata_opr;
111 static LIR_Opr R5_metadata_opr;
112 static LIR_Opr R6_metadata_opr;
113 static LIR_Opr R7_metadata_opr;
114 static LIR_Opr R8_metadata_opr;
115 static LIR_Opr R9_metadata_opr;
116 static LIR_Opr R10_metadata_opr;
117 static LIR_Opr R11_metadata_opr;
118 static LIR_Opr R12_metadata_opr;
119 //R13: System thread register. Not usable.
120 static LIR_Opr R14_metadata_opr;
121 static LIR_Opr R15_metadata_opr;
122 //R16: Java thread register. Not metadata.
123 static LIR_Opr R17_metadata_opr;
124 static LIR_Opr R18_metadata_opr;
125 static LIR_Opr R19_metadata_opr;
126 static LIR_Opr R20_metadata_opr;
127 static LIR_Opr R21_metadata_opr;
128 static LIR_Opr R22_metadata_opr;
129 static LIR_Opr R23_metadata_opr;
130 static LIR_Opr R24_metadata_opr;
131 static LIR_Opr R25_metadata_opr;
132 static LIR_Opr R26_metadata_opr;
133 static LIR_Opr R27_metadata_opr;
134 static LIR_Opr R28_metadata_opr;
135 //R29: TOC register. Not metadata.
136 //R30: R30_zero. Not metadata.
137 static LIR_Opr R31_metadata_opr;
138
139 static LIR_Opr SP_opr;
140
141 static LIR_Opr R0_long_opr;
142 static LIR_Opr R3_long_opr;
143
144 static LIR_Opr F1_opr;
145 static LIR_Opr F1_double_opr;
146
147 private:
148 static FloatRegister _fpu_regs [nof_fpu_regs];
149
150 static LIR_Opr as_long_single_opr(Register r) {
151 return LIR_OprFact::double_cpu(cpu_reg2rnr(r), cpu_reg2rnr(r));
152 }
153 static LIR_Opr as_long_pair_opr(Register r) {
154 return LIR_OprFact::double_cpu(cpu_reg2rnr(r->successor()), cpu_reg2rnr(r));
155 }
156
180 return LIR_OprFact::double_fpu(r->encoding());
181 }
182
183 static FloatRegister nr2floatreg (int rnr);
184
185 static VMReg fpu_regname (int n);
186
187 static bool is_caller_save_register(LIR_Opr reg);
188 static bool is_caller_save_register(Register r);
189
190 static int nof_caller_save_cpu_regs() { return pd_nof_caller_save_cpu_regs_frame_map; }
191 static int last_cpu_reg() { return pd_last_cpu_reg; }
192
193 // Registers which need to be saved in the frames (e.g. for GC).
194 // Register usage:
195 // R0: scratch
196 // R1: sp
197 // R13: system thread id
198 // R16: java thread
199 // R29: global TOC
200 // R30: R30_zero
201 static bool reg_needs_save(Register r) { return r != R0 && r != R1 && r != R13 && r != R16 && r != R29 && r != R30; }
202
203 #endif // CPU_PPC_VM_C1_FRAMEMAP_PPC_HPP
|