js/src/jit/arm/BaselineRegisters-arm.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/jit/arm/BaselineRegisters-arm.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,60 @@
     1.4 +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
     1.5 + * vim: set ts=8 sts=4 et sw=4 tw=99:
     1.6 + * This Source Code Form is subject to the terms of the Mozilla Public
     1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.9 +
    1.10 +#ifndef jit_arm_BaselineRegisters_arm_h
    1.11 +#define jit_arm_BaselineRegisters_arm_h
    1.12 +
    1.13 +#ifdef JS_ION
    1.14 +
    1.15 +#include "jit/IonMacroAssembler.h"
    1.16 +
    1.17 +namespace js {
    1.18 +namespace jit {
    1.19 +
    1.20 +// r15 = program-counter
    1.21 +// r14 = link-register
    1.22 +
    1.23 +// r13 = stack-pointer
    1.24 +// r11 = frame-pointer
    1.25 +static MOZ_CONSTEXPR_VAR Register BaselineFrameReg = r11;
    1.26 +static MOZ_CONSTEXPR_VAR Register BaselineStackReg = sp;
    1.27 +
    1.28 +// ValueOperands R0, R1, and R2.
    1.29 +// R0 == JSReturnReg, and R2 uses registers not
    1.30 +// preserved across calls.  R1 value should be
    1.31 +// preserved across calls.
    1.32 +static MOZ_CONSTEXPR_VAR ValueOperand R0(r3, r2);
    1.33 +static MOZ_CONSTEXPR_VAR ValueOperand R1(r5, r4);
    1.34 +static MOZ_CONSTEXPR_VAR ValueOperand R2(r1, r0);
    1.35 +
    1.36 +// BaselineTailCallReg and BaselineStubReg
    1.37 +// These use registers that are not preserved across
    1.38 +// calls.
    1.39 +static MOZ_CONSTEXPR_VAR Register BaselineTailCallReg = r14;
    1.40 +static MOZ_CONSTEXPR_VAR Register BaselineStubReg     = r9;
    1.41 +
    1.42 +static MOZ_CONSTEXPR_VAR Register ExtractTemp0        = InvalidReg;
    1.43 +static MOZ_CONSTEXPR_VAR Register ExtractTemp1        = InvalidReg;
    1.44 +
    1.45 +// Register used internally by MacroAssemblerARM.
    1.46 +static MOZ_CONSTEXPR_VAR Register BaselineSecondScratchReg = r6;
    1.47 +
    1.48 +// R7 - R9 are generally available for use within stubcode.
    1.49 +
    1.50 +// Note that BaselineTailCallReg is actually just the link
    1.51 +// register.  In ARM code emission, we do not clobber BaselineTailCallReg
    1.52 +// since we keep the return address for calls there.
    1.53 +
    1.54 +// FloatReg0 must be equal to ReturnFloatReg.
    1.55 +static MOZ_CONSTEXPR_VAR FloatRegister FloatReg0      = d0;
    1.56 +static MOZ_CONSTEXPR_VAR FloatRegister FloatReg1      = d1;
    1.57 +
    1.58 +} // namespace jit
    1.59 +} // namespace js
    1.60 +
    1.61 +#endif // JS_ION
    1.62 +
    1.63 +#endif /* jit_arm_BaselineRegisters_arm_h */

mercurial