gem5
[DEVELOP-FOR-23.0]
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
Enumerations
_
a
b
c
d
e
f
g
h
i
k
l
m
o
p
q
r
s
t
v
x
Enumerator
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
Enumerations
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
w
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Related Functions
:
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
s
t
v
Variables
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
Typedefs
a
b
c
d
g
h
i
l
m
r
s
t
u
w
Enumerations
b
h
i
o
p
Enumerator
h
i
o
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
arch
arm
regs
int.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2010-2014 ARM Limited
3
* All rights reserved
4
*
5
* The license below extends only to copyright in the software and shall
6
* not be construed as granting a license to any other intellectual
7
* property including but not limited to intellectual property relating
8
* to a hardware implementation of the functionality of the software
9
* licensed hereunder. You may use the software subject to the license
10
* terms below provided that you ensure that this notice is replicated
11
* unmodified and in its entirety in all distributions of the software,
12
* modified or unmodified, in source code or in binary form.
13
*
14
* Copyright (c) 2009 The Regents of The University of Michigan
15
* All rights reserved.
16
*
17
* Redistribution and use in source and binary forms, with or without
18
* modification, are permitted provided that the following conditions are
19
* met: redistributions of source code must retain the above copyright
20
* notice, this list of conditions and the following disclaimer;
21
* redistributions in binary form must reproduce the above copyright
22
* notice, this list of conditions and the following disclaimer in the
23
* documentation and/or other materials provided with the distribution;
24
* neither the name of the copyright holders nor the names of its
25
* contributors may be used to endorse or promote products derived from
26
* this software without specific prior written permission.
27
*
28
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
*/
40
41
#include "
arch/arm/regs/int.hh
"
42
43
#include "
arch/arm/isa.hh
"
44
#include "
arch/arm/regs/misc.hh
"
45
#include "
arch/arm/utility.hh
"
46
#include "
base/logging.hh
"
47
48
namespace
gem5
49
{
50
51
namespace
ArmISA
52
{
53
54
RegId
55
IntRegClassOps::flatten
(
const
BaseISA
&isa,
const
RegId
&
id
)
const
56
{
57
const
RegIndex
reg_idx =
id
.
index
();
58
59
auto
&arm_isa =
static_cast<
const
ArmISA::ISA
&
>
(isa);
60
61
if
(reg_idx <
int_reg::NumArchRegs
) {
62
return
{
flatIntRegClass
, arm_isa.mapIntRegId(reg_idx)};
63
}
else
if
(reg_idx <
int_reg::NumRegs
) {
64
return
{
flatIntRegClass
,
id
};
65
}
else
if
(reg_idx ==
int_reg::Spx
) {
66
auto
&arm_isa =
static_cast<
const
ArmISA::ISA
&
>
(isa);
67
CPSR cpsr = arm_isa.
readMiscRegNoEffect
(
MISCREG_CPSR
);
68
ExceptionLevel
el
=
opModeToEL
((
OperatingMode
)(uint8_t)cpsr.mode);
69
70
if
(!cpsr.sp &&
el
!=
EL0
)
71
return
{
flatIntRegClass
,
int_reg::Sp0
};
72
73
switch
(
el
) {
74
case
EL3
:
75
return
{
flatIntRegClass
,
int_reg::Sp3
};
76
case
EL2
:
77
return
{
flatIntRegClass
,
int_reg::Sp2
};
78
case
EL1
:
79
return
{
flatIntRegClass
,
int_reg::Sp1
};
80
case
EL0
:
81
return
{
flatIntRegClass
,
int_reg::Sp0
};
82
default
:
83
panic
(
"Invalid exception level"
);
84
}
85
}
else
{
86
return
{
flatIntRegClass
,
flattenIntRegModeIndex
(reg_idx)};
87
}
88
}
89
90
}
// namespace ArmISA
91
}
// namespace gem5
gem5::ArmISA::MISCREG_CPSR
@ MISCREG_CPSR
Definition:
misc.hh:66
gem5::ArmISA::int_reg::Sp0
constexpr RegId Sp0
Definition:
int.hh:233
gem5::ArmISA::el
Bitfield< 3, 2 > el
Definition:
misc_types.hh:73
gem5::ArmISA::IntRegClassOps::flatten
RegId flatten(const BaseISA &isa, const RegId &id) const override
Flatten register id id using information in the ISA object isa.
Definition:
int.cc:55
gem5::ArmISA::ISA
Definition:
isa.hh:70
gem5::ArmISA::EL1
@ EL1
Definition:
types.hh:274
gem5::ArmISA::int_reg::Sp1
constexpr RegId Sp1
Definition:
int.hh:234
gem5::ArmISA::opModeToEL
static ExceptionLevel opModeToEL(OperatingMode mode)
Definition:
types.hh:391
gem5::ArmISA::int_reg::Sp3
constexpr RegId Sp3
Definition:
int.hh:236
gem5::MipsISA::float_reg::NumArchRegs
@ NumArchRegs
Definition:
float.hh:79
gem5::ArmISA::cc_reg::NumRegs
@ NumRegs
Definition:
cc.hh:61
gem5::ArmISA::flattenIntRegModeIndex
static const RegId & flattenIntRegModeIndex(int reg)
Definition:
int.hh:575
gem5::ArmISA::EL2
@ EL2
Definition:
types.hh:275
isa.hh
gem5::ArmISA::EL3
@ EL3
Definition:
types.hh:276
gem5::ArmISA::flatIntRegClass
constexpr RegClass flatIntRegClass
Definition:
int.hh:178
utility.hh
gem5::ArmISA::EL0
@ EL0
Definition:
types.hh:273
misc.hh
logging.hh
gem5::RegId::index
constexpr RegIndex index() const
Index accessors.
Definition:
reg_class.hh:150
gem5::BaseISA
Definition:
isa.hh:58
gem5::RegIndex
uint16_t RegIndex
Definition:
types.hh:176
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition:
gpu_translation_state.hh:37
gem5::ArmISA::ISA::readMiscRegNoEffect
RegVal readMiscRegNoEffect(RegIndex idx) const override
Definition:
isa.cc:374
int.hh
gem5::ArmISA::OperatingMode
OperatingMode
Definition:
types.hh:279
gem5::ArmISA::int_reg::Spx
constexpr RegId Spx
Definition:
int.hh:238
gem5::ArmISA::int_reg::Sp2
constexpr RegId Sp2
Definition:
int.hh:235
gem5::RegId
Register ID: describe an architectural register with its class and index.
Definition:
reg_class.hh:92
gem5::ArmISA::ExceptionLevel
ExceptionLevel
Definition:
types.hh:271
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition:
logging.hh:188
Generated on Sun Jul 30 2023 01:56:49 for gem5 by
doxygen
1.8.17