1166db04e259ca51838c311891598664deeed85adIan Rogers/*
2166db04e259ca51838c311891598664deeed85adIan Rogers * Copyright (C) 2009 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_ARM_REGISTERS_ARM_H_
18166db04e259ca51838c311891598664deeed85adIan Rogers#define ART_RUNTIME_ARCH_ARM_REGISTERS_ARM_H_
19166db04e259ca51838c311891598664deeed85adIan Rogers
20166db04e259ca51838c311891598664deeed85adIan Rogers#include <iosfwd>
21166db04e259ca51838c311891598664deeed85adIan Rogers
22166db04e259ca51838c311891598664deeed85adIan Rogersnamespace art {
23166db04e259ca51838c311891598664deeed85adIan Rogersnamespace arm {
24166db04e259ca51838c311891598664deeed85adIan Rogers
25166db04e259ca51838c311891598664deeed85adIan Rogers// Values for registers.
26166db04e259ca51838c311891598664deeed85adIan Rogersenum Register {
27166db04e259ca51838c311891598664deeed85adIan Rogers  R0  =  0,
28166db04e259ca51838c311891598664deeed85adIan Rogers  R1  =  1,
29166db04e259ca51838c311891598664deeed85adIan Rogers  R2  =  2,
30166db04e259ca51838c311891598664deeed85adIan Rogers  R3  =  3,
31166db04e259ca51838c311891598664deeed85adIan Rogers  R4  =  4,
32166db04e259ca51838c311891598664deeed85adIan Rogers  R5  =  5,
33166db04e259ca51838c311891598664deeed85adIan Rogers  R6  =  6,
34166db04e259ca51838c311891598664deeed85adIan Rogers  R7  =  7,
35166db04e259ca51838c311891598664deeed85adIan Rogers  R8  =  8,
36166db04e259ca51838c311891598664deeed85adIan Rogers  R9  =  9,
37166db04e259ca51838c311891598664deeed85adIan Rogers  R10 = 10,
38166db04e259ca51838c311891598664deeed85adIan Rogers  R11 = 11,
39166db04e259ca51838c311891598664deeed85adIan Rogers  R12 = 12,
40166db04e259ca51838c311891598664deeed85adIan Rogers  R13 = 13,
41166db04e259ca51838c311891598664deeed85adIan Rogers  R14 = 14,
42166db04e259ca51838c311891598664deeed85adIan Rogers  R15 = 15,
43166db04e259ca51838c311891598664deeed85adIan Rogers  TR  = 9,  // thread register
44166db04e259ca51838c311891598664deeed85adIan Rogers  FP  = 11,
45166db04e259ca51838c311891598664deeed85adIan Rogers  IP  = 12,
46166db04e259ca51838c311891598664deeed85adIan Rogers  SP  = 13,
47166db04e259ca51838c311891598664deeed85adIan Rogers  LR  = 14,
48166db04e259ca51838c311891598664deeed85adIan Rogers  PC  = 15,
49166db04e259ca51838c311891598664deeed85adIan Rogers  kNumberOfCoreRegisters = 16,
50166db04e259ca51838c311891598664deeed85adIan Rogers  kNoRegister = -1,
51166db04e259ca51838c311891598664deeed85adIan Rogers};
52166db04e259ca51838c311891598664deeed85adIan Rogersstd::ostream& operator<<(std::ostream& os, const Register& rhs);
53166db04e259ca51838c311891598664deeed85adIan Rogers
54166db04e259ca51838c311891598664deeed85adIan Rogers
55166db04e259ca51838c311891598664deeed85adIan Rogers// Values for single-precision floating point registers.
56166db04e259ca51838c311891598664deeed85adIan Rogersenum SRegister {
57166db04e259ca51838c311891598664deeed85adIan Rogers  S0  =  0,
58166db04e259ca51838c311891598664deeed85adIan Rogers  S1  =  1,
59166db04e259ca51838c311891598664deeed85adIan Rogers  S2  =  2,
60166db04e259ca51838c311891598664deeed85adIan Rogers  S3  =  3,
61166db04e259ca51838c311891598664deeed85adIan Rogers  S4  =  4,
62166db04e259ca51838c311891598664deeed85adIan Rogers  S5  =  5,
63166db04e259ca51838c311891598664deeed85adIan Rogers  S6  =  6,
64166db04e259ca51838c311891598664deeed85adIan Rogers  S7  =  7,
65166db04e259ca51838c311891598664deeed85adIan Rogers  S8  =  8,
66166db04e259ca51838c311891598664deeed85adIan Rogers  S9  =  9,
67166db04e259ca51838c311891598664deeed85adIan Rogers  S10 = 10,
68166db04e259ca51838c311891598664deeed85adIan Rogers  S11 = 11,
69166db04e259ca51838c311891598664deeed85adIan Rogers  S12 = 12,
70166db04e259ca51838c311891598664deeed85adIan Rogers  S13 = 13,
71166db04e259ca51838c311891598664deeed85adIan Rogers  S14 = 14,
72166db04e259ca51838c311891598664deeed85adIan Rogers  S15 = 15,
73166db04e259ca51838c311891598664deeed85adIan Rogers  S16 = 16,
74166db04e259ca51838c311891598664deeed85adIan Rogers  S17 = 17,
75166db04e259ca51838c311891598664deeed85adIan Rogers  S18 = 18,
76166db04e259ca51838c311891598664deeed85adIan Rogers  S19 = 19,
77166db04e259ca51838c311891598664deeed85adIan Rogers  S20 = 20,
78166db04e259ca51838c311891598664deeed85adIan Rogers  S21 = 21,
79166db04e259ca51838c311891598664deeed85adIan Rogers  S22 = 22,
80166db04e259ca51838c311891598664deeed85adIan Rogers  S23 = 23,
81166db04e259ca51838c311891598664deeed85adIan Rogers  S24 = 24,
82166db04e259ca51838c311891598664deeed85adIan Rogers  S25 = 25,
83166db04e259ca51838c311891598664deeed85adIan Rogers  S26 = 26,
84166db04e259ca51838c311891598664deeed85adIan Rogers  S27 = 27,
85166db04e259ca51838c311891598664deeed85adIan Rogers  S28 = 28,
86166db04e259ca51838c311891598664deeed85adIan Rogers  S29 = 29,
87166db04e259ca51838c311891598664deeed85adIan Rogers  S30 = 30,
88166db04e259ca51838c311891598664deeed85adIan Rogers  S31 = 31,
89166db04e259ca51838c311891598664deeed85adIan Rogers  kNumberOfSRegisters = 32,
90166db04e259ca51838c311891598664deeed85adIan Rogers  kNoSRegister = -1,
91166db04e259ca51838c311891598664deeed85adIan Rogers};
92166db04e259ca51838c311891598664deeed85adIan Rogersstd::ostream& operator<<(std::ostream& os, const SRegister& rhs);
93166db04e259ca51838c311891598664deeed85adIan Rogers
94166db04e259ca51838c311891598664deeed85adIan Rogers}  // namespace arm
95166db04e259ca51838c311891598664deeed85adIan Rogers}  // namespace art
96166db04e259ca51838c311891598664deeed85adIan Rogers
97166db04e259ca51838c311891598664deeed85adIan Rogers#endif  // ART_RUNTIME_ARCH_ARM_REGISTERS_ARM_H_
98