1166db04e259ca51838c311891598664deeed85adIan Rogers/* 2166db04e259ca51838c311891598664deeed85adIan Rogers * Copyright (C) 2011 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#include "registers_arm.h" 18166db04e259ca51838c311891598664deeed85adIan Rogers 19166db04e259ca51838c311891598664deeed85adIan Rogers#include <ostream> 20166db04e259ca51838c311891598664deeed85adIan Rogers 21166db04e259ca51838c311891598664deeed85adIan Rogersnamespace art { 22166db04e259ca51838c311891598664deeed85adIan Rogersnamespace arm { 23166db04e259ca51838c311891598664deeed85adIan Rogers 24166db04e259ca51838c311891598664deeed85adIan Rogersstatic const char* kRegisterNames[] = { 25166db04e259ca51838c311891598664deeed85adIan Rogers "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", 26166db04e259ca51838c311891598664deeed85adIan Rogers "fp", "ip", "sp", "lr", "pc" 27166db04e259ca51838c311891598664deeed85adIan Rogers}; 28166db04e259ca51838c311891598664deeed85adIan Rogersstd::ostream& operator<<(std::ostream& os, const Register& rhs) { 29166db04e259ca51838c311891598664deeed85adIan Rogers if (rhs >= R0 && rhs <= PC) { 30166db04e259ca51838c311891598664deeed85adIan Rogers os << kRegisterNames[rhs]; 31166db04e259ca51838c311891598664deeed85adIan Rogers } else { 32166db04e259ca51838c311891598664deeed85adIan Rogers os << "Register[" << static_cast<int>(rhs) << "]"; 33166db04e259ca51838c311891598664deeed85adIan Rogers } 34166db04e259ca51838c311891598664deeed85adIan Rogers return os; 35166db04e259ca51838c311891598664deeed85adIan Rogers} 36166db04e259ca51838c311891598664deeed85adIan Rogers 37166db04e259ca51838c311891598664deeed85adIan Rogersstd::ostream& operator<<(std::ostream& os, const SRegister& rhs) { 38166db04e259ca51838c311891598664deeed85adIan Rogers if (rhs >= S0 && rhs < kNumberOfSRegisters) { 39166db04e259ca51838c311891598664deeed85adIan Rogers os << "s" << static_cast<int>(rhs); 40166db04e259ca51838c311891598664deeed85adIan Rogers } else { 41166db04e259ca51838c311891598664deeed85adIan Rogers os << "SRegister[" << static_cast<int>(rhs) << "]"; 42166db04e259ca51838c311891598664deeed85adIan Rogers } 43166db04e259ca51838c311891598664deeed85adIan Rogers return os; 44166db04e259ca51838c311891598664deeed85adIan Rogers} 45166db04e259ca51838c311891598664deeed85adIan Rogers 46166db04e259ca51838c311891598664deeed85adIan Rogers} // namespace arm 47166db04e259ca51838c311891598664deeed85adIan Rogers} // namespace art 48