1ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers/* 2ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * Copyright (C) 2011 The Android Open Source Project 3ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * 4ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * Licensed under the Apache License, Version 2.0 (the "License"); 5ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * you may not use this file except in compliance with the License. 6ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * You may obtain a copy of the License at 7ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * 8ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * http://www.apache.org/licenses/LICENSE-2.0 9ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * 10ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * Unless required by applicable law or agreed to in writing, software 11ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * distributed under the License is distributed on an "AS IS" BASIS, 12ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * See the License for the specific language governing permissions and 14ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers * limitations under the License. 15ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers */ 16ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers 17ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers#ifndef ART_RUNTIME_ARCH_X86_64_REGISTERS_X86_64_H_ 18ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers#define ART_RUNTIME_ARCH_X86_64_REGISTERS_X86_64_H_ 19ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers 20ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers#include <iosfwd> 21ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers 22ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers#include "base/logging.h" 23ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers#include "base/macros.h" 24ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers#include "globals.h" 25ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers 26ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogersnamespace art { 27ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogersnamespace x86_64 { 28ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers 29ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogersenum Register { 30ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers RAX = 0, 31ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers RCX = 1, 32ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers RDX = 2, 33ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers RBX = 3, 34ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers RSP = 4, 35ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers RBP = 5, 36ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers RSI = 6, 37ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers RDI = 7, 38ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers R8 = 8, 39ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers R9 = 9, 40ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers R10 = 10, 41ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers R11 = 11, 42ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers R12 = 12, 43ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers R13 = 13, 44ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers R14 = 14, 45ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers R15 = 15, 46ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers kNumberOfCpuRegisters = 16, 47ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers kNoRegister = -1 // Signals an illegal register. 48ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers}; 49ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogersstd::ostream& operator<<(std::ostream& os, const Register& rhs); 50ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers 51936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogersenum FloatRegister { 52936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM0 = 0, 53936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM1 = 1, 54936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM2 = 2, 55936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM3 = 3, 56936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM4 = 4, 57936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM5 = 5, 58936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM6 = 6, 59936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM7 = 7, 60936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM8 = 8, 61936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM9 = 9, 62936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM10 = 10, 63936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM11 = 11, 64936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM12 = 12, 65936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM13 = 13, 66936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM14 = 14, 67936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers XMM15 = 15, 68bf6b92a158053c98b15f4393abb3b86344ec9a20Andreas Gampe kNumberOfFloatRegisters = 16 69936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers}; 70dd7624d2b9e599d57762d12031b10b89defc9807Ian Rogersstd::ostream& operator<<(std::ostream& os, const FloatRegister& rhs); 71936b37f3a7f224d990a36b2ec66782a4462180d6Ian Rogers 72ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers} // namespace x86_64 73ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers} // namespace art 74ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers 75ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers#endif // ART_RUNTIME_ARCH_X86_64_REGISTERS_X86_64_H_ 76