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

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

Issue 2092413002: [RegisterConfiguration] Streamline access to arch defaults, simplify Registers. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix compile. Created 4 years, 5 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/macro-assembler-ppc.cc ('k') | src/register-configuration.h » ('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 #include <stdarg.h> 5 #include <stdarg.h>
6 #include <stdlib.h> 6 #include <stdlib.h>
7 #include <cmath> 7 #include <cmath>
8 8
9 #if V8_TARGET_ARCH_PPC 9 #if V8_TARGET_ARCH_PPC
10 10
11 #include "src/assembler.h" 11 #include "src/assembler.h"
12 #include "src/base/bits.h" 12 #include "src/base/bits.h"
13 #include "src/codegen.h" 13 #include "src/codegen.h"
14 #include "src/disasm.h" 14 #include "src/disasm.h"
15 #include "src/ppc/constants-ppc.h" 15 #include "src/ppc/constants-ppc.h"
16 #include "src/ppc/frames-ppc.h" 16 #include "src/ppc/frames-ppc.h"
17 #include "src/ppc/simulator-ppc.h" 17 #include "src/ppc/simulator-ppc.h"
18 #include "src/runtime/runtime-utils.h" 18 #include "src/runtime/runtime-utils.h"
19 19
20 #if defined(USE_SIMULATOR) 20 #if defined(USE_SIMULATOR)
21 21
22 // Only build the simulator if not compiling for real PPC hardware. 22 // Only build the simulator if not compiling for real PPC hardware.
23 namespace v8 { 23 namespace v8 {
24 namespace internal { 24 namespace internal {
25 25
26 const auto GetRegConfig = RegisterConfiguration::Crankshaft;
27
26 // This macro provides a platform independent use of sscanf. The reason for 28 // This macro provides a platform independent use of sscanf. The reason for
27 // SScanF not being implemented in a platform independent way through 29 // SScanF not being implemented in a platform independent way through
28 // ::v8::internal::OS in the same way as SNPrintF is that the 30 // ::v8::internal::OS in the same way as SNPrintF is that the
29 // Windows C Run-Time Library does not provide vsscanf. 31 // Windows C Run-Time Library does not provide vsscanf.
30 #define SScanF sscanf // NOLINT 32 #define SScanF sscanf // NOLINT
31 33
32 // The PPCDebugger class is used by the simulator while debugging simulated 34 // The PPCDebugger class is used by the simulator while debugging simulated
33 // PowerPC code. 35 // PowerPC code.
34 class PPCDebugger { 36 class PPCDebugger {
35 public: 37 public:
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 // Leave the debugger shell. 310 // Leave the debugger shell.
309 done = true; 311 done = true;
310 } else if ((strcmp(cmd, "p") == 0) || (strcmp(cmd, "print") == 0)) { 312 } else if ((strcmp(cmd, "p") == 0) || (strcmp(cmd, "print") == 0)) {
311 if (argc == 2 || (argc == 3 && strcmp(arg2, "fp") == 0)) { 313 if (argc == 2 || (argc == 3 && strcmp(arg2, "fp") == 0)) {
312 intptr_t value; 314 intptr_t value;
313 double dvalue; 315 double dvalue;
314 if (strcmp(arg1, "all") == 0) { 316 if (strcmp(arg1, "all") == 0) {
315 for (int i = 0; i < kNumRegisters; i++) { 317 for (int i = 0; i < kNumRegisters; i++) {
316 value = GetRegisterValue(i); 318 value = GetRegisterValue(i);
317 PrintF(" %3s: %08" V8PRIxPTR, 319 PrintF(" %3s: %08" V8PRIxPTR,
318 Register::from_code(i).ToString(), value); 320 GetRegConfig()->GetGeneralRegisterName(i), value);
319 if ((argc == 3 && strcmp(arg2, "fp") == 0) && i < 8 && 321 if ((argc == 3 && strcmp(arg2, "fp") == 0) && i < 8 &&
320 (i % 2) == 0) { 322 (i % 2) == 0) {
321 dvalue = GetRegisterPairDoubleValue(i); 323 dvalue = GetRegisterPairDoubleValue(i);
322 PrintF(" (%f)\n", dvalue); 324 PrintF(" (%f)\n", dvalue);
323 } else if (i != 0 && !((i + 1) & 3)) { 325 } else if (i != 0 && !((i + 1) & 3)) {
324 PrintF("\n"); 326 PrintF("\n");
325 } 327 }
326 } 328 }
327 PrintF(" pc: %08" V8PRIxPTR " lr: %08" V8PRIxPTR 329 PrintF(" pc: %08" V8PRIxPTR " lr: %08" V8PRIxPTR
328 " " 330 " "
329 "ctr: %08" V8PRIxPTR " xer: %08x cr: %08x\n", 331 "ctr: %08" V8PRIxPTR " xer: %08x cr: %08x\n",
330 sim_->special_reg_pc_, sim_->special_reg_lr_, 332 sim_->special_reg_pc_, sim_->special_reg_lr_,
331 sim_->special_reg_ctr_, sim_->special_reg_xer_, 333 sim_->special_reg_ctr_, sim_->special_reg_xer_,
332 sim_->condition_reg_); 334 sim_->condition_reg_);
333 } else if (strcmp(arg1, "alld") == 0) { 335 } else if (strcmp(arg1, "alld") == 0) {
334 for (int i = 0; i < kNumRegisters; i++) { 336 for (int i = 0; i < kNumRegisters; i++) {
335 value = GetRegisterValue(i); 337 value = GetRegisterValue(i);
336 PrintF(" %3s: %08" V8PRIxPTR " %11" V8PRIdPTR, 338 PrintF(" %3s: %08" V8PRIxPTR " %11" V8PRIdPTR,
337 Register::from_code(i).ToString(), value, value); 339 GetRegConfig()->GetGeneralRegisterName(i), value, value);
338 if ((argc == 3 && strcmp(arg2, "fp") == 0) && i < 8 && 340 if ((argc == 3 && strcmp(arg2, "fp") == 0) && i < 8 &&
339 (i % 2) == 0) { 341 (i % 2) == 0) {
340 dvalue = GetRegisterPairDoubleValue(i); 342 dvalue = GetRegisterPairDoubleValue(i);
341 PrintF(" (%f)\n", dvalue); 343 PrintF(" (%f)\n", dvalue);
342 } else if (!((i + 1) % 2)) { 344 } else if (!((i + 1) % 2)) {
343 PrintF("\n"); 345 PrintF("\n");
344 } 346 }
345 } 347 }
346 PrintF(" pc: %08" V8PRIxPTR " lr: %08" V8PRIxPTR 348 PrintF(" pc: %08" V8PRIxPTR " lr: %08" V8PRIxPTR
347 " " 349 " "
348 "ctr: %08" V8PRIxPTR " xer: %08x cr: %08x\n", 350 "ctr: %08" V8PRIxPTR " xer: %08x cr: %08x\n",
349 sim_->special_reg_pc_, sim_->special_reg_lr_, 351 sim_->special_reg_pc_, sim_->special_reg_lr_,
350 sim_->special_reg_ctr_, sim_->special_reg_xer_, 352 sim_->special_reg_ctr_, sim_->special_reg_xer_,
351 sim_->condition_reg_); 353 sim_->condition_reg_);
352 } else if (strcmp(arg1, "allf") == 0) { 354 } else if (strcmp(arg1, "allf") == 0) {
353 for (int i = 0; i < DoubleRegister::kNumRegisters; i++) { 355 for (int i = 0; i < DoubleRegister::kNumRegisters; i++) {
354 dvalue = GetFPDoubleRegisterValue(i); 356 dvalue = GetFPDoubleRegisterValue(i);
355 uint64_t as_words = bit_cast<uint64_t>(dvalue); 357 uint64_t as_words = bit_cast<uint64_t>(dvalue);
356 PrintF("%3s: %f 0x%08x %08x\n", 358 PrintF("%3s: %f 0x%08x %08x\n",
357 DoubleRegister::from_code(i).ToString(), dvalue, 359 GetRegConfig()->GetDoubleRegisterName(i), dvalue,
358 static_cast<uint32_t>(as_words >> 32), 360 static_cast<uint32_t>(as_words >> 32),
359 static_cast<uint32_t>(as_words & 0xffffffff)); 361 static_cast<uint32_t>(as_words & 0xffffffff));
360 } 362 }
361 } else if (arg1[0] == 'r' && 363 } else if (arg1[0] == 'r' &&
362 (arg1[1] >= '0' && arg1[1] <= '9' && 364 (arg1[1] >= '0' && arg1[1] <= '9' &&
363 (arg1[2] == '\0' || (arg1[2] >= '0' && arg1[2] <= '9' && 365 (arg1[2] == '\0' || (arg1[2] >= '0' && arg1[2] <= '9' &&
364 arg1[3] == '\0')))) { 366 arg1[3] == '\0')))) {
365 int regnum = strtoul(&arg1[1], 0, 10); 367 int regnum = strtoul(&arg1[1], 0, 10);
366 if (regnum != kNoRegister) { 368 if (regnum != kNoRegister) {
367 value = GetRegisterValue(regnum); 369 value = GetRegisterValue(regnum);
(...skipping 3760 matching lines...) Expand 10 before | Expand all | Expand 10 after
4128 uintptr_t* stack_slot = reinterpret_cast<uintptr_t*>(current_sp); 4130 uintptr_t* stack_slot = reinterpret_cast<uintptr_t*>(current_sp);
4129 uintptr_t address = *stack_slot; 4131 uintptr_t address = *stack_slot;
4130 set_register(sp, current_sp + sizeof(uintptr_t)); 4132 set_register(sp, current_sp + sizeof(uintptr_t));
4131 return address; 4133 return address;
4132 } 4134 }
4133 } // namespace internal 4135 } // namespace internal
4134 } // namespace v8 4136 } // namespace v8
4135 4137
4136 #endif // USE_SIMULATOR 4138 #endif // USE_SIMULATOR
4137 #endif // V8_TARGET_ARCH_PPC 4139 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/ppc/macro-assembler-ppc.cc ('k') | src/register-configuration.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698