OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef VM_CONSTANTS_MIPS_H_ | 5 #ifndef VM_CONSTANTS_MIPS_H_ |
6 #define VM_CONSTANTS_MIPS_H_ | 6 #define VM_CONSTANTS_MIPS_H_ |
7 | 7 |
8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
9 | 9 |
10 namespace dart { | 10 namespace dart { |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 | 452 |
453 class Instr { | 453 class Instr { |
454 public: | 454 public: |
455 enum { | 455 enum { |
456 kInstrSize = 4, | 456 kInstrSize = 4, |
457 }; | 457 }; |
458 | 458 |
459 static const int32_t kNopInstruction = 0; | 459 static const int32_t kNopInstruction = 0; |
460 | 460 |
461 // Reserved break instruction codes. | 461 // Reserved break instruction codes. |
462 static const int32_t kStopMessageCode = 1 << 16; // For Stop(message). | 462 static const int32_t kBreakPointCode = 0xdeb0; // For breakpoint. |
463 static const int32_t kRedirectCode = 2 << 16; // For call redirection in sim. | 463 static const int32_t kStopMessageCode = 0xdeb1; // For Stop(message). |
464 static const int32_t kMsgMessageCode = 3 << 16; // For trace message in sim. | 464 static const int32_t kSimulatorMessageCode = 0xdeb2; // For trace msg in sim. |
465 static const int32_t kSimulatorBreakCode = 4 << 16; // For breakpoint in sim. | 465 static const int32_t kSimulatorBreakCode = 0xdeb3; // For breakpoint in sim. |
| 466 static const int32_t kSimulatorRedirectCode = 0xca11; // For redirection. |
466 | 467 |
467 // General breakpoint instruction: break(0), for user breakpoint and to fill | 468 static const int32_t kBreakPointZeroInstruction = |
468 // assembler code buffers in debug mode. | 469 (SPECIAL << kOpcodeShift) | (BREAK << kFunctionShift); |
| 470 |
| 471 // Breakpoint instruction filling assembler code buffers in debug mode. |
469 static const int32_t kBreakPointInstruction = | 472 static const int32_t kBreakPointInstruction = |
470 (SPECIAL << kOpcodeShift) | (BREAK << kFunctionShift); | 473 kBreakPointZeroInstruction | (kBreakPointCode << kBreakCodeShift); |
| 474 |
| 475 // Breakpoint instruction used by the simulator. |
| 476 // Should be distinct from kBreakPointInstruction and from a typical user |
| 477 // breakpoint inserted in generated code for debugging, e.g. break_(0). |
| 478 static const int32_t kSimulatorBreakpointInstruction = |
| 479 kBreakPointZeroInstruction | (kSimulatorBreakCode << kBreakCodeShift); |
| 480 |
| 481 // Runtime call redirection instruction used by the simulator. |
| 482 static const int32_t kSimulatorRedirectInstruction = |
| 483 kBreakPointZeroInstruction | (kSimulatorRedirectCode << kBreakCodeShift); |
471 | 484 |
472 // Get the raw instruction bits. | 485 // Get the raw instruction bits. |
473 inline int32_t InstructionBits() const { | 486 inline int32_t InstructionBits() const { |
474 return *reinterpret_cast<const int32_t*>(this); | 487 return *reinterpret_cast<const int32_t*>(this); |
475 } | 488 } |
476 | 489 |
477 // Set the raw instruction bits to value. | 490 // Set the raw instruction bits to value. |
478 inline void SetInstructionBits(int32_t value) { | 491 inline void SetInstructionBits(int32_t value) { |
479 *reinterpret_cast<int32_t*>(this) = value; | 492 *reinterpret_cast<int32_t*>(this) = value; |
480 } | 493 } |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 #endif // defined(DEBUG) | 633 #endif // defined(DEBUG) |
621 | 634 |
622 private: | 635 private: |
623 DISALLOW_ALLOCATION(); | 636 DISALLOW_ALLOCATION(); |
624 DISALLOW_IMPLICIT_CONSTRUCTORS(Instr); | 637 DISALLOW_IMPLICIT_CONSTRUCTORS(Instr); |
625 }; | 638 }; |
626 | 639 |
627 } // namespace dart | 640 } // namespace dart |
628 | 641 |
629 #endif // VM_CONSTANTS_MIPS_H_ | 642 #endif // VM_CONSTANTS_MIPS_H_ |
OLD | NEW |