Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(177)

Side by Side Diff: src/ppc/simulator-ppc.h

Issue 901083004: Contribution of PowerPC port (continuation of 422063005) - PPC dir update (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Contribution of PowerPC port (continuation of 422063005) - PPC dir update -comments and rebase Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ppc/regexp-macro-assembler-ppc.cc ('k') | src/ppc/simulator-ppc.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 5
6 // Declares a Simulator for PPC instructions if we are not generating a native 6 // Declares a Simulator for PPC instructions if we are not generating a native
7 // PPC binary. This Simulator allows us to run and debug PPC code generation on 7 // PPC binary. This Simulator allows us to run and debug PPC code generation on
8 // regular desktop machines. 8 // regular desktop machines.
9 // V8 calls into generated code by "calling" the CALL_GENERATED_CODE macro, 9 // V8 calls into generated code by "calling" the CALL_GENERATED_CODE macro,
10 // which will start execution in the Simulator or forwards to the real entry 10 // which will start execution in the Simulator or forwards to the real entry
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 // The currently executing Simulator instance. Potentially there can be one 173 // The currently executing Simulator instance. Potentially there can be one
174 // for each native thread. 174 // for each native thread.
175 static Simulator* current(v8::internal::Isolate* isolate); 175 static Simulator* current(v8::internal::Isolate* isolate);
176 176
177 // Accessors for register state. 177 // Accessors for register state.
178 void set_register(int reg, intptr_t value); 178 void set_register(int reg, intptr_t value);
179 intptr_t get_register(int reg) const; 179 intptr_t get_register(int reg) const;
180 double get_double_from_register_pair(int reg); 180 double get_double_from_register_pair(int reg);
181 void set_d_register_from_double(int dreg, const double dbl) { 181 void set_d_register_from_double(int dreg, const double dbl) {
182 DCHECK(dreg >= 0 && dreg < kNumFPRs); 182 DCHECK(dreg >= 0 && dreg < kNumFPRs);
183 fp_registers_[dreg] = dbl; 183 *bit_cast<double*>(&fp_registers_[dreg]) = dbl;
184 } 184 }
185 double get_double_from_d_register(int dreg) { return fp_registers_[dreg]; } 185 double get_double_from_d_register(int dreg) {
186 DCHECK(dreg >= 0 && dreg < kNumFPRs);
187 return *bit_cast<double*>(&fp_registers_[dreg]);
188 }
189 void set_d_register(int dreg, int64_t value) {
190 DCHECK(dreg >= 0 && dreg < kNumFPRs);
191 fp_registers_[dreg] = value;
192 }
193 int64_t get_d_register(int dreg) {
194 DCHECK(dreg >= 0 && dreg < kNumFPRs);
195 return fp_registers_[dreg];
196 }
186 197
187 // Special case of set_register and get_register to access the raw PC value. 198 // Special case of set_register and get_register to access the raw PC value.
188 void set_pc(intptr_t value); 199 void set_pc(intptr_t value);
189 intptr_t get_pc() const; 200 intptr_t get_pc() const;
190 201
191 Address get_sp() { 202 Address get_sp() {
192 return reinterpret_cast<Address>(static_cast<intptr_t>(get_register(sp))); 203 return reinterpret_cast<Address>(static_cast<intptr_t>(get_register(sp)));
193 } 204 }
194 205
195 // Accessor to the internal simulator stack area. 206 // Accessor to the internal simulator stack area.
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 297
287 intptr_t* ReadDW(intptr_t addr); 298 intptr_t* ReadDW(intptr_t addr);
288 void WriteDW(intptr_t addr, int64_t value); 299 void WriteDW(intptr_t addr, int64_t value);
289 300
290 void Trace(Instruction* instr); 301 void Trace(Instruction* instr);
291 void SetCR0(intptr_t result, bool setSO = false); 302 void SetCR0(intptr_t result, bool setSO = false);
292 void ExecuteBranchConditional(Instruction* instr); 303 void ExecuteBranchConditional(Instruction* instr);
293 void ExecuteExt1(Instruction* instr); 304 void ExecuteExt1(Instruction* instr);
294 bool ExecuteExt2_10bit(Instruction* instr); 305 bool ExecuteExt2_10bit(Instruction* instr);
295 bool ExecuteExt2_9bit_part1(Instruction* instr); 306 bool ExecuteExt2_9bit_part1(Instruction* instr);
296 void ExecuteExt2_9bit_part2(Instruction* instr); 307 bool ExecuteExt2_9bit_part2(Instruction* instr);
308 void ExecuteExt2_5bit(Instruction* instr);
297 void ExecuteExt2(Instruction* instr); 309 void ExecuteExt2(Instruction* instr);
298 void ExecuteExt4(Instruction* instr); 310 void ExecuteExt4(Instruction* instr);
299 #if V8_TARGET_ARCH_PPC64 311 #if V8_TARGET_ARCH_PPC64
300 void ExecuteExt5(Instruction* instr); 312 void ExecuteExt5(Instruction* instr);
301 #endif 313 #endif
302 void ExecuteGeneric(Instruction* instr); 314 void ExecuteGeneric(Instruction* instr);
303 315
304 // Executes one instruction. 316 // Executes one instruction.
305 void ExecuteInstruction(Instruction* instr); 317 void ExecuteInstruction(Instruction* instr);
306 318
(...skipping 19 matching lines...) Expand all
326 // There is currently no way to read the CPSR directly, and thus read the Q 338 // There is currently no way to read the CPSR directly, and thus read the Q
327 // flag, so this is left unimplemented. 339 // flag, so this is left unimplemented.
328 intptr_t registers_[kNumGPRs]; 340 intptr_t registers_[kNumGPRs];
329 int32_t condition_reg_; 341 int32_t condition_reg_;
330 int32_t fp_condition_reg_; 342 int32_t fp_condition_reg_;
331 intptr_t special_reg_lr_; 343 intptr_t special_reg_lr_;
332 intptr_t special_reg_pc_; 344 intptr_t special_reg_pc_;
333 intptr_t special_reg_ctr_; 345 intptr_t special_reg_ctr_;
334 int32_t special_reg_xer_; 346 int32_t special_reg_xer_;
335 347
336 double fp_registers_[kNumFPRs]; 348 int64_t fp_registers_[kNumFPRs];
337 349
338 // Simulator support. 350 // Simulator support.
339 char* stack_; 351 char* stack_;
340 bool pc_modified_; 352 bool pc_modified_;
341 int icount_; 353 int icount_;
342 354
343 // Debugger input. 355 // Debugger input.
344 char* last_debugger_input_; 356 char* last_debugger_input_;
345 357
346 // Icache simulation 358 // Icache simulation
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 416
405 static inline void UnregisterCTryCatch() { 417 static inline void UnregisterCTryCatch() {
406 Simulator::current(Isolate::Current())->PopAddress(); 418 Simulator::current(Isolate::Current())->PopAddress();
407 } 419 }
408 }; 420 };
409 } 421 }
410 } // namespace v8::internal 422 } // namespace v8::internal
411 423
412 #endif // !defined(USE_SIMULATOR) 424 #endif // !defined(USE_SIMULATOR)
413 #endif // V8_PPC_SIMULATOR_PPC_H_ 425 #endif // V8_PPC_SIMULATOR_PPC_H_
OLDNEW
« no previous file with comments | « src/ppc/regexp-macro-assembler-ppc.cc ('k') | src/ppc/simulator-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698