gem5
v20.1.0.0
arch
arm
nativetrace.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2006 The Regents of The University of Michigan
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are
7
* met: redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer;
9
* redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution;
12
* neither the name of the copyright holders nor the names of its
13
* contributors may be used to endorse or promote products derived from
14
* this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
*/
28
29
#ifndef __ARCH_ARM_NATIVETRACE_HH__
30
#define __ARCH_ARM_NATIVETRACE_HH__
31
32
#include "
base/types.hh
"
33
#include "
cpu/nativetrace.hh
"
34
#include "params/ArmNativeTrace.hh"
35
36
namespace
Trace
{
37
38
class
ArmNativeTrace
:
public
NativeTrace
39
{
40
public
:
41
enum
StateID
{
42
STATE_R0
,
43
STATE_R1
,
44
STATE_R2
,
45
STATE_R3
,
46
STATE_R4
,
47
STATE_R5
,
48
STATE_R6
,
49
STATE_R7
,
50
STATE_R8
,
51
STATE_R9
,
52
STATE_R10
,
53
STATE_R11
,
54
STATE_FP
=
STATE_R11
,
55
STATE_R12
,
56
STATE_R13
,
57
STATE_SP
=
STATE_R13
,
58
STATE_R14
,
59
STATE_LR
=
STATE_R14
,
60
STATE_R15
,
61
STATE_PC
=
STATE_R15
,
62
STATE_CPSR
,
63
STATE_F0
,
STATE_F1
,
STATE_F2
,
STATE_F3
,
STATE_F4
,
STATE_F5
,
STATE_F6
,
64
STATE_F7
,
STATE_F8
,
STATE_F9
,
STATE_F10
,
STATE_F11
,
STATE_F12
,
65
STATE_F13
,
STATE_F14
,
STATE_F15
,
STATE_F16
,
STATE_F17
,
STATE_F18
,
66
STATE_F19
,
STATE_F20
,
STATE_F21
,
STATE_F22
,
STATE_F23
,
STATE_F24
,
67
STATE_F25
,
STATE_F26
,
STATE_F27
,
STATE_F28
,
STATE_F29
,
STATE_F30
,
68
STATE_F31
,
STATE_FPSCR
,
69
STATE_NUMVALS
70
};
71
72
protected
:
73
struct
ThreadState
{
74
bool
changed
[
STATE_NUMVALS
];
75
uint64_t
state
[2][
STATE_NUMVALS
];
76
uint64_t *
newState
;
77
uint64_t *
oldState
;
78
int
current
;
79
void
update
(
NativeTrace
*parent);
80
void
update
(
ThreadContext
*tc);
81
82
ThreadState
()
83
{
84
for
(
int
i
= 0;
i
<
STATE_NUMVALS
;
i
++) {
85
changed
[
i
] =
false
;
86
state
[0][
i
] =
state
[1][
i
] = 0;
87
current
= 0;
88
newState
=
state
[0];
89
oldState
=
state
[1];
90
}
91
}
92
};
93
94
ThreadState
nState
,
mState
;
95
96
bool
stopOnPCError
;
97
98
public
:
99
typedef
ArmNativeTraceParams
Params
;
100
101
const
Params
*
102
params
()
const
103
{
104
return
dynamic_cast<
const
Params
*
>
(
_params
);
105
}
106
107
ArmNativeTrace
(
const
Params
*
p
) :
108
NativeTrace
(
p
),
stopOnPCError
(
p
->stop_on_pc_error)
109
{}
110
111
void
check
(
NativeTraceRecord
*record);
112
};
113
114
}
// namespace Trace
115
116
#endif // __ARCH_ARM_NATIVETRACE_HH__
Trace::ArmNativeTrace::STATE_CPSR
@ STATE_CPSR
Definition:
nativetrace.hh:62
Trace::ArmNativeTrace::STATE_F7
@ STATE_F7
Definition:
nativetrace.hh:64
Trace::ArmNativeTrace::STATE_R12
@ STATE_R12
Definition:
nativetrace.hh:55
Trace::ArmNativeTrace::STATE_F22
@ STATE_F22
Definition:
nativetrace.hh:66
Trace::ArmNativeTrace::STATE_R11
@ STATE_R11
Definition:
nativetrace.hh:53
Trace::ArmNativeTrace::STATE_F11
@ STATE_F11
Definition:
nativetrace.hh:64
Trace::ArmNativeTrace::STATE_R10
@ STATE_R10
Definition:
nativetrace.hh:52
ArmISA::i
Bitfield< 7 > i
Definition:
miscregs_types.hh:63
Trace::ArmNativeTrace::STATE_F19
@ STATE_F19
Definition:
nativetrace.hh:66
Trace::ArmNativeTrace::STATE_F10
@ STATE_F10
Definition:
nativetrace.hh:64
Trace
Definition:
nativetrace.cc:52
Trace::ArmNativeTrace::STATE_LR
@ STATE_LR
Definition:
nativetrace.hh:59
Trace::ArmNativeTrace::STATE_F2
@ STATE_F2
Definition:
nativetrace.hh:63
Trace::ArmNativeTrace::STATE_F30
@ STATE_F30
Definition:
nativetrace.hh:67
Trace::ArmNativeTrace::ThreadState
Definition:
nativetrace.hh:73
Trace::ArmNativeTrace::STATE_R15
@ STATE_R15
Definition:
nativetrace.hh:60
Trace::ArmNativeTrace::stopOnPCError
bool stopOnPCError
Definition:
nativetrace.hh:96
Trace::ArmNativeTrace::STATE_F8
@ STATE_F8
Definition:
nativetrace.hh:64
Trace::ArmNativeTrace::STATE_F20
@ STATE_F20
Definition:
nativetrace.hh:66
Trace::ArmNativeTrace::STATE_F13
@ STATE_F13
Definition:
nativetrace.hh:65
Trace::ArmNativeTrace::STATE_R5
@ STATE_R5
Definition:
nativetrace.hh:47
Trace::ArmNativeTrace::nState
ThreadState nState
Definition:
nativetrace.hh:94
Trace::ArmNativeTrace::STATE_F0
@ STATE_F0
Definition:
nativetrace.hh:63
Trace::ArmNativeTrace::ThreadState::current
int current
Definition:
nativetrace.hh:78
Trace::ArmNativeTrace::STATE_R6
@ STATE_R6
Definition:
nativetrace.hh:48
Trace::ArmNativeTrace::ThreadState::newState
uint64_t * newState
Definition:
nativetrace.hh:76
Trace::ArmNativeTrace::STATE_R4
@ STATE_R4
Definition:
nativetrace.hh:46
nativetrace.hh
Trace::ArmNativeTrace::STATE_F9
@ STATE_F9
Definition:
nativetrace.hh:64
Trace::ArmNativeTrace::STATE_F14
@ STATE_F14
Definition:
nativetrace.hh:65
Trace::ArmNativeTrace::STATE_F21
@ STATE_F21
Definition:
nativetrace.hh:66
Trace::ArmNativeTrace::STATE_F12
@ STATE_F12
Definition:
nativetrace.hh:64
Trace::ArmNativeTrace::STATE_R3
@ STATE_R3
Definition:
nativetrace.hh:45
Trace::ArmNativeTrace::mState
ThreadState mState
Definition:
nativetrace.hh:94
Trace::ArmNativeTrace::STATE_FPSCR
@ STATE_FPSCR
Definition:
nativetrace.hh:68
Trace::ArmNativeTrace::STATE_NUMVALS
@ STATE_NUMVALS
Definition:
nativetrace.hh:69
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition:
thread_context.hh:88
Trace::ArmNativeTrace::STATE_PC
@ STATE_PC
Definition:
nativetrace.hh:61
Trace::ArmNativeTrace::params
const Params * params() const
Definition:
nativetrace.hh:102
Trace::ArmNativeTrace::STATE_R2
@ STATE_R2
Definition:
nativetrace.hh:44
Trace::ArmNativeTrace::STATE_SP
@ STATE_SP
Definition:
nativetrace.hh:57
Trace::ArmNativeTrace::ThreadState::state
uint64_t state[2][STATE_NUMVALS]
Definition:
nativetrace.hh:75
Trace::ArmNativeTrace::STATE_F29
@ STATE_F29
Definition:
nativetrace.hh:67
Trace::ArmNativeTrace::STATE_F25
@ STATE_F25
Definition:
nativetrace.hh:67
Trace::ArmNativeTrace::STATE_F23
@ STATE_F23
Definition:
nativetrace.hh:66
Trace::ArmNativeTrace::STATE_R13
@ STATE_R13
Definition:
nativetrace.hh:56
Trace::NativeTraceRecord
Definition:
nativetrace.hh:48
Trace::ArmNativeTrace::Params
ArmNativeTraceParams Params
Definition:
nativetrace.hh:99
Trace::ArmNativeTrace::STATE_F28
@ STATE_F28
Definition:
nativetrace.hh:67
Trace::ArmNativeTrace::StateID
StateID
Definition:
nativetrace.hh:41
Trace::ArmNativeTrace
Definition:
nativetrace.hh:38
Trace::ArmNativeTrace::STATE_F31
@ STATE_F31
Definition:
nativetrace.hh:68
Trace::ArmNativeTrace::STATE_R8
@ STATE_R8
Definition:
nativetrace.hh:50
Trace::ArmNativeTrace::ThreadState::changed
bool changed[STATE_NUMVALS]
Definition:
nativetrace.hh:74
Trace::ArmNativeTrace::STATE_F3
@ STATE_F3
Definition:
nativetrace.hh:63
Trace::ArmNativeTrace::STATE_FP
@ STATE_FP
Definition:
nativetrace.hh:54
Trace::ArmNativeTrace::STATE_F1
@ STATE_F1
Definition:
nativetrace.hh:63
Trace::ArmNativeTrace::STATE_F15
@ STATE_F15
Definition:
nativetrace.hh:65
Trace::ArmNativeTrace::STATE_F18
@ STATE_F18
Definition:
nativetrace.hh:65
Trace::ArmNativeTrace::STATE_F16
@ STATE_F16
Definition:
nativetrace.hh:65
Trace::ArmNativeTrace::ThreadState::update
void update(NativeTrace *parent)
Definition:
nativetrace.cc:67
Trace::ArmNativeTrace::STATE_F5
@ STATE_F5
Definition:
nativetrace.hh:63
Trace::ArmNativeTrace::STATE_F6
@ STATE_F6
Definition:
nativetrace.hh:63
Trace::ArmNativeTrace::STATE_R1
@ STATE_R1
Definition:
nativetrace.hh:43
types.hh
SimObject::_params
const SimObjectParams * _params
Cached copy of the object parameters.
Definition:
sim_object.hh:110
Trace::ArmNativeTrace::STATE_R7
@ STATE_R7
Definition:
nativetrace.hh:49
Trace::ArmNativeTrace::STATE_F17
@ STATE_F17
Definition:
nativetrace.hh:65
Trace::ArmNativeTrace::STATE_F27
@ STATE_F27
Definition:
nativetrace.hh:67
Trace::ArmNativeTrace::STATE_R0
@ STATE_R0
Definition:
nativetrace.hh:42
Trace::ArmNativeTrace::ThreadState::ThreadState
ThreadState()
Definition:
nativetrace.hh:82
MipsISA::p
Bitfield< 0 > p
Definition:
pra_constants.hh:323
Trace::ArmNativeTrace::check
void check(NativeTraceRecord *record)
Definition:
nativetrace.cc:139
Trace::ArmNativeTrace::ThreadState::oldState
uint64_t * oldState
Definition:
nativetrace.hh:77
Trace::ArmNativeTrace::STATE_R14
@ STATE_R14
Definition:
nativetrace.hh:58
Trace::ArmNativeTrace::STATE_R9
@ STATE_R9
Definition:
nativetrace.hh:51
Trace::ArmNativeTrace::STATE_F26
@ STATE_F26
Definition:
nativetrace.hh:67
Trace::ArmNativeTrace::STATE_F24
@ STATE_F24
Definition:
nativetrace.hh:66
Trace::ArmNativeTrace::STATE_F4
@ STATE_F4
Definition:
nativetrace.hh:63
Trace::NativeTrace
Definition:
nativetrace.hh:66
Trace::ArmNativeTrace::ArmNativeTrace
ArmNativeTrace(const Params *p)
Definition:
nativetrace.hh:107
Generated on Wed Sep 30 2020 14:02:01 for gem5 by
doxygen
1.8.17