gem5
v19.0.0.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
+
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
m
n
o
p
r
s
t
u
v
w
x
+
Enumerations
a
b
c
d
e
f
i
l
m
o
p
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
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
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
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
+
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
z
+
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
z
+
Typedefs
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
+
Enumerations
a
b
c
d
e
f
g
i
l
m
o
p
r
s
t
v
w
+
Enumerator
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
+
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
arch
riscv
isa.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009 The Regents of The University of Michigan
3
* Copyright (c) 2009 The University of Edinburgh
4
* Copyright (c) 2014 Sven Karlsson
5
* Copyright (c) 2016 RISC-V Foundation
6
* Copyright (c) 2016 The University of Virginia
7
* All rights reserved.
8
*
9
* Redistribution and use in source and binary forms, with or without
10
* modification, are permitted provided that the following conditions are
11
* met: redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer;
13
* redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution;
16
* neither the name of the copyright holders nor the names of its
17
* contributors may be used to endorse or promote products derived from
18
* this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*
32
* Authors: Gabe Black
33
* Timothy M. Jones
34
* Sven Karlsson
35
* Alec Roelke
36
*/
37
38
#ifndef __ARCH_RISCV_ISA_HH__
39
#define __ARCH_RISCV_ISA_HH__
40
41
#include <map>
42
#include <string>
43
44
#include "
arch/generic/isa.hh
"
45
#include "
arch/riscv/registers.hh
"
46
#include "
arch/riscv/types.hh
"
47
#include "
base/bitfield.hh
"
48
#include "
base/logging.hh
"
49
#include "
cpu/reg_class.hh
"
50
#include "
sim/sim_object.hh
"
51
52
struct
RiscvISAParams;
53
class
ThreadContext
;
54
class
Checkpoint;
55
class
EventManager
;
56
57
namespace
RiscvISA
58
{
59
60
enum
PrivilegeMode
{
61
PRV_U
= 0,
62
PRV_S
= 1,
63
PRV_M
= 3
64
};
65
66
class
ISA
:
public
BaseISA
67
{
68
protected
:
69
std::vector<RegVal>
miscRegFile
;
70
71
bool
hpmCounterEnabled
(
int
counter)
const
;
72
73
public
:
74
typedef
RiscvISAParams
Params
;
75
76
void
clear
();
77
78
RegVal
readMiscRegNoEffect
(
int
misc_reg)
const
;
79
RegVal
readMiscReg
(
int
misc_reg,
ThreadContext
*tc);
80
void
setMiscRegNoEffect
(
int
misc_reg,
RegVal
val
);
81
void
setMiscReg
(
int
misc_reg,
RegVal
val
,
ThreadContext
*tc);
82
83
RegId
flattenRegId
(
const
RegId
®Id)
const
{
return
regId; }
84
int
flattenIntIndex
(
int
reg
)
const
{
return
reg
; }
85
int
flattenFloatIndex
(
int
reg
)
const
{
return
reg
; }
86
int
flattenVecIndex
(
int
reg
)
const
{
return
reg
; }
87
int
flattenVecElemIndex
(
int
reg
)
const
{
return
reg
; }
88
int
flattenVecPredIndex
(
int
reg
)
const
{
return
reg
; }
89
int
flattenCCIndex
(
int
reg
)
const
{
return
reg
; }
90
int
flattenMiscIndex
(
int
reg
)
const
{
return
reg
; }
91
92
void
startup
(
ThreadContext
*tc) {}
93
95
using
BaseISA::startup
;
96
97
const
Params *
params
()
const
;
98
99
ISA
(Params *
p
);
100
};
101
102
}
// namespace RiscvISA
103
104
#endif // __ARCH_RISCV_ISA_HH__
RiscvISA::PRV_M
Definition:
isa.hh:63
logging.hh
RiscvISA::ISA::flattenFloatIndex
int flattenFloatIndex(int reg) const
Definition:
isa.hh:85
X86ISA::reg
Bitfield< 5, 3 > reg
Definition:
types.hh:89
RiscvISA::ISA::hpmCounterEnabled
bool hpmCounterEnabled(int counter) const
Definition:
isa.cc:77
RiscvISA::ISA::flattenCCIndex
int flattenCCIndex(int reg) const
Definition:
isa.hh:89
RiscvISA::ISA::readMiscReg
RegVal readMiscReg(int misc_reg, ThreadContext *tc)
Definition:
isa.cc:113
RiscvISA::ISA::ISA
ISA(Params *p)
Definition:
isa.cc:49
RiscvISA::ISA::setMiscReg
void setMiscReg(int misc_reg, RegVal val, ThreadContext *tc)
Definition:
isa.cc:187
RegVal
uint64_t RegVal
Definition:
types.hh:168
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Definition:
thread_context.hh:93
RiscvISA::ISA::params
const Params * params() const
Definition:
isa.cc:56
RiscvISA::p
Bitfield< 0 > p
Definition:
pra_constants.hh:325
RiscvISA::ISA::flattenMiscIndex
int flattenMiscIndex(int reg) const
Definition:
isa.hh:90
std::vector< RegVal >
X86ISA::val
Bitfield< 63 > val
Definition:
misc.hh:771
RiscvISA::ISA::flattenVecPredIndex
int flattenVecPredIndex(int reg) const
Definition:
isa.hh:88
bitfield.hh
RiscvISA::PRV_S
Definition:
isa.hh:62
registers.hh
isa.hh
types.hh
RiscvISA::PrivilegeMode
PrivilegeMode
Definition:
isa.hh:60
RiscvISA::ISA::flattenIntIndex
int flattenIntIndex(int reg) const
Definition:
isa.hh:84
RiscvISA::ISA
Definition:
isa.hh:66
RiscvISA::ISA::readMiscRegNoEffect
RegVal readMiscRegNoEffect(int misc_reg) const
Definition:
isa.cc:100
RiscvISA::ISA::startup
void startup(ThreadContext *tc)
Definition:
isa.hh:92
RiscvISA::ISA::flattenVecElemIndex
int flattenVecElemIndex(int reg) const
Definition:
isa.hh:87
RiscvISA::PRV_U
Definition:
isa.hh:61
RiscvISA::ISA::flattenVecIndex
int flattenVecIndex(int reg) const
Definition:
isa.hh:86
sim_object.hh
RiscvISA::ISA::Params
RiscvISAParams Params
Definition:
isa.hh:74
reg_class.hh
RegId
Register ID: describe an architectural register with its class and index.
Definition:
reg_class.hh:79
BaseISA
Definition:
isa.hh:35
RiscvISA::ISA::clear
void clear()
Definition:
isa.cc:61
RiscvISA::ISA::miscRegFile
std::vector< RegVal > miscRegFile
Definition:
isa.hh:69
RiscvISA::ISA::setMiscRegNoEffect
void setMiscRegNoEffect(int misc_reg, RegVal val)
Definition:
isa.cc:176
EventManager
Definition:
eventq.hh:726
RiscvISA
Definition:
decoder.cc:37
RiscvISA::ISA::flattenRegId
RegId flattenRegId(const RegId ®Id) const
Definition:
isa.hh:83
SimObject::startup
virtual void startup()
startup() is the final initialization call before simulation.
Definition:
sim_object.cc:99
Generated on Fri Feb 28 2020 16:26:56 for gem5 by
doxygen
1.8.13