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
tracers
tarmac_base.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017-2019 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
* Redistribution and use in source and binary forms, with or without
15
* modification, are permitted provided that the following conditions are
16
* met: redistributions of source code must retain the above copyright
17
* notice, this list of conditions and the following disclaimer;
18
* redistributions in binary form must reproduce the above copyright
19
* notice, this list of conditions and the following disclaimer in the
20
* documentation and/or other materials provided with the distribution;
21
* neither the name of the copyright holders nor the names of its
22
* contributors may be used to endorse or promote products derived from
23
* this software without specific prior written permission.
24
*
25
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
*/
37
38
#include "
arch/arm/tracers/tarmac_base.hh
"
39
40
#include <algorithm>
41
#include <string>
42
43
#include "
arch/arm/regs/misc.hh
"
44
#include "
cpu/reg_class.hh
"
45
#include "
cpu/static_inst.hh
"
46
#include "
cpu/thread_context.hh
"
47
48
namespace
gem5
49
{
50
51
using namespace
ArmISA;
52
53
namespace
trace {
54
55
TarmacBaseRecord::TarmacBaseRecord(
Tick
_when,
ThreadContext
*_thread,
56
const
StaticInstPtr
_staticInst,
57
const
PCStateBase
&_pc,
58
const
StaticInstPtr
_macroStaticInst)
59
:
InstRecord
(_when, _thread, _staticInst, _pc, _macroStaticInst)
60
{
61
}
62
63
TarmacBaseRecord::InstEntry::InstEntry
(
64
ThreadContext
* thread,
65
const
PCStateBase
&
pc
,
66
const
StaticInstPtr
staticInst,
67
bool
predicate)
68
: taken(predicate) ,
69
addr
(
pc
.instAddr()) ,
70
opcode
(staticInst->getEMI() & 0xffffffff),
71
disassemble(staticInst->disassemble(
addr
)),
72
isetstate(pcToISetState(
pc
)),
73
mode
(
MODE_USER
)
74
{
75
76
// Operating mode gained by reading the architectural register (CPSR)
77
const
CPSR cpsr =
thread
->
readMiscRegNoEffect
(
MISCREG_CPSR
);
78
mode
= (
OperatingMode
) (uint8_t)cpsr.mode;
79
80
// In Tarmac, instruction names are printed in capital
81
// letters.
82
std::for_each(
disassemble
.begin(),
disassemble
.end(),
83
[](
char
&
c
) { c = toupper(c); });
84
}
85
86
TarmacBaseRecord::RegEntry::RegEntry
(
const
PCStateBase
&
pc
)
87
: isetstate(
pcToISetState
(
pc
)),
88
values(2, 0)
89
{
90
// values vector is constructed with size = 2, for
91
// holding Lo and Hi values.
92
}
93
94
TarmacBaseRecord::MemEntry::MemEntry
(
95
uint8_t _size,
96
Addr
_addr,
97
uint64_t _data)
98
:
size
(_size),
addr
(_addr),
data
(_data)
99
{
100
}
101
102
TarmacBaseRecord::ISetState
103
TarmacBaseRecord::pcToISetState
(
const
PCStateBase
&
pc
)
104
{
105
auto
&apc =
pc
.as<
ArmISA::PCState
>();
106
TarmacBaseRecord::ISetState
isetstate;
107
108
if
(apc.aarch64())
109
isetstate =
TarmacBaseRecord::ISET_A64
;
110
else
if
(!apc.thumb() && !apc.jazelle())
111
isetstate =
TarmacBaseRecord::ISET_ARM
;
112
else
if
(apc.thumb() && !apc.jazelle())
113
isetstate =
TarmacBaseRecord::ISET_THUMB
;
114
else
115
// No Jazelle state in TARMAC
116
isetstate =
TarmacBaseRecord::ISET_UNSUPPORTED
;
117
118
return
isetstate;
119
}
120
121
}
// namespace trace
122
}
// namespace gem5
gem5::ArmISA::MISCREG_CPSR
@ MISCREG_CPSR
Definition:
misc.hh:66
gem5::trace::InstRecord::size
Addr size
The size of the memory request.
Definition:
insttracer.hh:86
gem5::trace::TarmacBaseRecord::ISET_THUMB
@ ISET_THUMB
Definition:
tarmac_base.hh:78
gem5::trace::TarmacBaseRecord::ISET_A64
@ ISET_A64
Definition:
tarmac_base.hh:78
gem5::trace::InstRecord
Definition:
insttracer.hh:60
tarmac_base.hh
gem5::RefCountingPtr< StaticInst >
gem5::trace::TarmacBaseRecord::InstEntry::InstEntry
InstEntry()=default
gem5::VegaISA::c
Bitfield< 2 > c
Definition:
pagetable.hh:63
gem5::trace::TarmacBaseRecord::RegEntry::RegEntry
RegEntry()=default
gem5::ArmISA::opcode
Bitfield< 24, 21 > opcode
Definition:
types.hh:92
gem5::ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition:
thread_context.hh:88
gem5::MipsISA::PCState
GenericISA::DelaySlotPCState< 4 > PCState
Definition:
pcstate.hh:40
gem5::Tick
uint64_t Tick
Tick count type.
Definition:
types.hh:58
static_inst.hh
gem5::ThreadContext::readMiscRegNoEffect
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
gem5::ArmISA::MODE_USER
@ MODE_USER
Definition:
types.hh:288
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition:
types.hh:147
gem5::trace::InstRecord::data
union gem5::trace::InstRecord::Data data
gem5::trace::TarmacBaseRecord::pcToISetState
static ISetState pcToISetState(const PCStateBase &pc)
Returns the Instruction Set State according to the current PCState.
Definition:
tarmac_base.cc:103
gem5::trace::TarmacBaseRecord::ISET_UNSUPPORTED
@ ISET_UNSUPPORTED
Definition:
tarmac_base.hh:79
gem5::trace::TarmacBaseRecord::MemEntry::MemEntry
MemEntry()=default
gem5::trace::InstRecord::thread
ThreadContext * thread
Definition:
insttracer.hh:67
gem5::trace::TarmacBaseRecord::ISET_ARM
@ ISET_ARM
Definition:
tarmac_base.hh:78
misc.hh
gem5::trace::InstRecord::pc
std::unique_ptr< PCStateBase > pc
Definition:
insttracer.hh:71
gem5::MipsISA::pc
Bitfield< 4 > pc
Definition:
pra_constants.hh:243
reg_class.hh
gem5::trace::InstRecord::addr
Addr addr
The address that was accessed.
Definition:
insttracer.hh:85
gem5::trace::TarmacBaseRecord::InstEntry::mode
ArmISA::OperatingMode mode
Definition:
tarmac_base.hh:98
gem5::PCStateBase
Definition:
pcstate.hh:57
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition:
gpu_translation_state.hh:37
thread_context.hh
gem5::ArmISA::OperatingMode
OperatingMode
Definition:
types.hh:279
gem5::trace::TarmacBaseRecord::InstEntry::disassemble
std::string disassemble
Definition:
tarmac_base.hh:96
gem5::trace::TarmacBaseRecord::ISetState
ISetState
ARM instruction set state.
Definition:
tarmac_base.hh:78
gem5::ArmISA::mode
Bitfield< 4, 0 > mode
Definition:
misc_types.hh:74
gem5::X86ISA::addr
Bitfield< 3 > addr
Definition:
types.hh:84
Generated on Sun Jul 30 2023 01:56:50 for gem5 by
doxygen
1.8.17