1166db04e259ca51838c311891598664deeed85adIan Rogers/* 2166db04e259ca51838c311891598664deeed85adIan Rogers * Copyright (C) 2012 The Android Open Source Project 3166db04e259ca51838c311891598664deeed85adIan Rogers * 4166db04e259ca51838c311891598664deeed85adIan Rogers * Licensed under the Apache License, Version 2.0 (the "License"); 5166db04e259ca51838c311891598664deeed85adIan Rogers * you may not use this file except in compliance with the License. 6166db04e259ca51838c311891598664deeed85adIan Rogers * You may obtain a copy of the License at 7166db04e259ca51838c311891598664deeed85adIan Rogers * 8166db04e259ca51838c311891598664deeed85adIan Rogers * http://www.apache.org/licenses/LICENSE-2.0 9166db04e259ca51838c311891598664deeed85adIan Rogers * 10166db04e259ca51838c311891598664deeed85adIan Rogers * Unless required by applicable law or agreed to in writing, software 11166db04e259ca51838c311891598664deeed85adIan Rogers * distributed under the License is distributed on an "AS IS" BASIS, 12166db04e259ca51838c311891598664deeed85adIan Rogers * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13166db04e259ca51838c311891598664deeed85adIan Rogers * See the License for the specific language governing permissions and 14166db04e259ca51838c311891598664deeed85adIan Rogers * limitations under the License. 15166db04e259ca51838c311891598664deeed85adIan Rogers */ 16166db04e259ca51838c311891598664deeed85adIan Rogers 17166db04e259ca51838c311891598664deeed85adIan Rogers#ifndef ART_RUNTIME_ARCH_MIPS_REGISTERS_MIPS_H_ 18166db04e259ca51838c311891598664deeed85adIan Rogers#define ART_RUNTIME_ARCH_MIPS_REGISTERS_MIPS_H_ 19166db04e259ca51838c311891598664deeed85adIan Rogers 20166db04e259ca51838c311891598664deeed85adIan Rogers#include <iosfwd> 21166db04e259ca51838c311891598664deeed85adIan Rogers 22166db04e259ca51838c311891598664deeed85adIan Rogers#include "base/logging.h" 23166db04e259ca51838c311891598664deeed85adIan Rogers#include "base/macros.h" 24166db04e259ca51838c311891598664deeed85adIan Rogers#include "globals.h" 25166db04e259ca51838c311891598664deeed85adIan Rogers 26166db04e259ca51838c311891598664deeed85adIan Rogersnamespace art { 27166db04e259ca51838c311891598664deeed85adIan Rogersnamespace mips { 28166db04e259ca51838c311891598664deeed85adIan Rogers 29166db04e259ca51838c311891598664deeed85adIan Rogersenum Register { 30166db04e259ca51838c311891598664deeed85adIan Rogers ZERO = 0, 31166db04e259ca51838c311891598664deeed85adIan Rogers AT = 1, // Assembler temporary. 32166db04e259ca51838c311891598664deeed85adIan Rogers V0 = 2, // Values. 33166db04e259ca51838c311891598664deeed85adIan Rogers V1 = 3, 34166db04e259ca51838c311891598664deeed85adIan Rogers A0 = 4, // Arguments. 35166db04e259ca51838c311891598664deeed85adIan Rogers A1 = 5, 36166db04e259ca51838c311891598664deeed85adIan Rogers A2 = 6, 37166db04e259ca51838c311891598664deeed85adIan Rogers A3 = 7, 38166db04e259ca51838c311891598664deeed85adIan Rogers T0 = 8, // Temporaries. 39166db04e259ca51838c311891598664deeed85adIan Rogers T1 = 9, 40166db04e259ca51838c311891598664deeed85adIan Rogers T2 = 10, 41166db04e259ca51838c311891598664deeed85adIan Rogers T3 = 11, 42166db04e259ca51838c311891598664deeed85adIan Rogers T4 = 12, 43166db04e259ca51838c311891598664deeed85adIan Rogers T5 = 13, 44166db04e259ca51838c311891598664deeed85adIan Rogers T6 = 14, 45166db04e259ca51838c311891598664deeed85adIan Rogers T7 = 15, 46166db04e259ca51838c311891598664deeed85adIan Rogers S0 = 16, // Saved values. 47166db04e259ca51838c311891598664deeed85adIan Rogers S1 = 17, 48166db04e259ca51838c311891598664deeed85adIan Rogers S2 = 18, 49166db04e259ca51838c311891598664deeed85adIan Rogers S3 = 19, 50166db04e259ca51838c311891598664deeed85adIan Rogers S4 = 20, 51166db04e259ca51838c311891598664deeed85adIan Rogers S5 = 21, 52166db04e259ca51838c311891598664deeed85adIan Rogers S6 = 22, 53166db04e259ca51838c311891598664deeed85adIan Rogers S7 = 23, 54166db04e259ca51838c311891598664deeed85adIan Rogers T8 = 24, // More temporaries. 55166db04e259ca51838c311891598664deeed85adIan Rogers T9 = 25, 56166db04e259ca51838c311891598664deeed85adIan Rogers K0 = 26, // Reserved for trap handler. 57166db04e259ca51838c311891598664deeed85adIan Rogers K1 = 27, 58166db04e259ca51838c311891598664deeed85adIan Rogers GP = 28, // Global pointer. 59166db04e259ca51838c311891598664deeed85adIan Rogers SP = 29, // Stack pointer. 60166db04e259ca51838c311891598664deeed85adIan Rogers FP = 30, // Saved value/frame pointer. 61166db04e259ca51838c311891598664deeed85adIan Rogers RA = 31, // Return address. 62166db04e259ca51838c311891598664deeed85adIan Rogers kNumberOfCoreRegisters = 32, 63166db04e259ca51838c311891598664deeed85adIan Rogers kNoRegister = -1 // Signals an illegal register. 64166db04e259ca51838c311891598664deeed85adIan Rogers}; 65166db04e259ca51838c311891598664deeed85adIan Rogersstd::ostream& operator<<(std::ostream& os, const Register& rhs); 66166db04e259ca51838c311891598664deeed85adIan Rogers 67166db04e259ca51838c311891598664deeed85adIan Rogers// Values for single-precision floating point registers. 68166db04e259ca51838c311891598664deeed85adIan Rogersenum FRegister { 69166db04e259ca51838c311891598664deeed85adIan Rogers F0 = 0, 70166db04e259ca51838c311891598664deeed85adIan Rogers F1 = 1, 71166db04e259ca51838c311891598664deeed85adIan Rogers F2 = 2, 72166db04e259ca51838c311891598664deeed85adIan Rogers F3 = 3, 73166db04e259ca51838c311891598664deeed85adIan Rogers F4 = 4, 74166db04e259ca51838c311891598664deeed85adIan Rogers F5 = 5, 75166db04e259ca51838c311891598664deeed85adIan Rogers F6 = 6, 76166db04e259ca51838c311891598664deeed85adIan Rogers F7 = 7, 77166db04e259ca51838c311891598664deeed85adIan Rogers F8 = 8, 78166db04e259ca51838c311891598664deeed85adIan Rogers F9 = 9, 79166db04e259ca51838c311891598664deeed85adIan Rogers F10 = 10, 80166db04e259ca51838c311891598664deeed85adIan Rogers F11 = 11, 81166db04e259ca51838c311891598664deeed85adIan Rogers F12 = 12, 82166db04e259ca51838c311891598664deeed85adIan Rogers F13 = 13, 83166db04e259ca51838c311891598664deeed85adIan Rogers F14 = 14, 84166db04e259ca51838c311891598664deeed85adIan Rogers F15 = 15, 85166db04e259ca51838c311891598664deeed85adIan Rogers F16 = 16, 86166db04e259ca51838c311891598664deeed85adIan Rogers F17 = 17, 87166db04e259ca51838c311891598664deeed85adIan Rogers F18 = 18, 88166db04e259ca51838c311891598664deeed85adIan Rogers F19 = 19, 89166db04e259ca51838c311891598664deeed85adIan Rogers F20 = 20, 90166db04e259ca51838c311891598664deeed85adIan Rogers F21 = 21, 91166db04e259ca51838c311891598664deeed85adIan Rogers F22 = 22, 92166db04e259ca51838c311891598664deeed85adIan Rogers F23 = 23, 93166db04e259ca51838c311891598664deeed85adIan Rogers F24 = 24, 94166db04e259ca51838c311891598664deeed85adIan Rogers F25 = 25, 95166db04e259ca51838c311891598664deeed85adIan Rogers F26 = 26, 96166db04e259ca51838c311891598664deeed85adIan Rogers F27 = 27, 97166db04e259ca51838c311891598664deeed85adIan Rogers F28 = 28, 98166db04e259ca51838c311891598664deeed85adIan Rogers F29 = 29, 99166db04e259ca51838c311891598664deeed85adIan Rogers F30 = 30, 100166db04e259ca51838c311891598664deeed85adIan Rogers F31 = 31, 101166db04e259ca51838c311891598664deeed85adIan Rogers kNumberOfFRegisters = 32, 102166db04e259ca51838c311891598664deeed85adIan Rogers kNoFRegister = -1, 103166db04e259ca51838c311891598664deeed85adIan Rogers}; 104166db04e259ca51838c311891598664deeed85adIan Rogersstd::ostream& operator<<(std::ostream& os, const FRegister& rhs); 105166db04e259ca51838c311891598664deeed85adIan Rogers 106166db04e259ca51838c311891598664deeed85adIan Rogers} // namespace mips 107166db04e259ca51838c311891598664deeed85adIan Rogers} // namespace art 108166db04e259ca51838c311891598664deeed85adIan Rogers 109166db04e259ca51838c311891598664deeed85adIan Rogers#endif // ART_RUNTIME_ARCH_MIPS_REGISTERS_MIPS_H_ 110