| Index: runtime/vm/constants_arm64.h
|
| ===================================================================
|
| --- runtime/vm/constants_arm64.h (revision 35156)
|
| +++ runtime/vm/constants_arm64.h (working copy)
|
| @@ -52,6 +52,13 @@
|
| SP = 32,
|
| ZR = 33,
|
|
|
| + // SPREG is used from architecture independent code. It is only ever passed to
|
| + // Simulator::get_register(). Calls to get_register() from architecture
|
| + // independent code don't include an R31Type, so if we were to define
|
| + // SPREG to be R31, we wouldn't be able to distinguish from ZR. Therefore we
|
| + // use another value, and check for it in get_register().
|
| + SPREG = 34,
|
| +
|
| // Aliases.
|
| IP0 = R16,
|
| IP1 = R17,
|
| @@ -111,7 +118,6 @@
|
| const Register TMP2 = R17;
|
| const Register CTX = R28; // Caches current context in generated code.
|
| const Register PP = R27; // Caches object pool pointer in generated code.
|
| -const Register SPREG = R31; // Stack pointer register.
|
| const Register FPREG = FP; // Frame pointer register.
|
| const Register ICREG = R5; // IC data register.
|
|
|
| @@ -141,8 +147,8 @@
|
| const RegList kAbiPreservedCpuRegs =
|
| (1 << R19) | (1 << R20) | (1 << R21) | (1 << R22) |
|
| (1 << R23) | (1 << R24) | (1 << R25) | (1 << R26) |
|
| - (1 << R27) | (1 << R28) | (1 << R29);
|
| -const int kAbiPreservedCpuRegCount = 11;
|
| + (1 << R27) | (1 << R28);
|
| +const int kAbiPreservedCpuRegCount = 10;
|
| const VRegister kAbiFirstPreservedFpuReg = V8;
|
| const VRegister kAbiLastPreservedFpuReg = V15;
|
| const int kAbiPreservedFpuRegCount = 8;
|
| @@ -585,6 +591,8 @@
|
| static const int32_t kBreakPointInstruction = // hlt #kImmExceptionIsDebug.
|
| HLT | (kImmExceptionIsDebug << kImm16Shift);
|
| static const int kBreakPointInstructionSize = kInstrSize;
|
| + static const int32_t kRedirectInstruction =
|
| + HLT | (kImmExceptionIsRedirectedCall << kImm16Shift);
|
|
|
| // Read one particular bit out of the instruction bits.
|
| inline int Bit(int nr) const {
|
|
|