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
alpha
utility.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2003-2005 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
* Authors: Nathan Binkert
29
* Steve Reinhardt
30
*/
31
32
#ifndef __ARCH_ALPHA_UTILITY_HH__
33
#define __ARCH_ALPHA_UTILITY_HH__
34
35
#include "
arch/alpha/isa_traits.hh
"
36
#include "
arch/alpha/registers.hh
"
37
#include "
arch/alpha/types.hh
"
38
#include "
base/logging.hh
"
39
#include "
cpu/static_inst.hh
"
40
#include "
cpu/thread_context.hh
"
41
#include "
arch/alpha/ev5.hh
"
42
43
namespace
AlphaISA
{
44
45
inline
PCState
46
buildRetPC
(
const
PCState
&curPC,
const
PCState
&callPC)
47
{
48
PCState
retPC = callPC;
49
retPC.
advance
();
50
return
retPC;
51
}
52
53
uint64_t
getArgument
(
ThreadContext
*tc,
int
&number, uint16_t size,
bool
fp
);
54
55
inline
bool
56
inUserMode
(
ThreadContext
*tc)
57
{
58
return
(tc->
readMiscRegNoEffect
(
IPR_DTB_CM
) & 0x18) != 0;
59
}
60
61
// Alpha IPR register accessors
62
inline
bool
PcPAL
(
Addr
addr
) {
return
addr & 0x3; }
63
65
//
66
// Translation stuff
67
//
68
69
inline
Addr
PteAddr
(
Addr
a
) {
return
(a &
PteMask
) <<
PteShift
; }
70
71
// User Virtual
72
inline
bool
IsUSeg
(
Addr
a
) { assert(
USegBase
== 0);
return
a <=
USegEnd
; }
73
74
// Kernel Direct Mapped
75
inline
bool
IsK0Seg
(
Addr
a
) {
return
K0SegBase
<= a && a <=
K0SegEnd
; }
76
inline
Addr
K0Seg2Phys
(
Addr
addr
) {
return
addr & ~
K0SegBase
; }
77
78
// Kernel Virtual
79
inline
bool
IsK1Seg
(
Addr
a
) {
return
K1SegBase
<= a && a <=
K1SegEnd
; }
80
81
inline
Addr
82
TruncPage
(
Addr
addr
)
83
{
return
addr & ~(
PageBytes
- 1); }
84
85
inline
Addr
86
RoundPage
(
Addr
addr
)
87
{
return
(addr +
PageBytes
- 1) & ~(
PageBytes
- 1); }
88
89
void
initIPRs
(
ThreadContext
*tc,
int
cpuId);
90
91
void
copyRegs
(
ThreadContext
*src,
ThreadContext
*dest);
92
93
void
copyMiscRegs
(
ThreadContext
*src,
ThreadContext
*dest);
94
95
void
skipFunction
(
ThreadContext
*tc);
96
97
inline
void
98
advancePC
(
PCState
&
pc
,
const
StaticInstPtr
&inst)
99
{
100
pc.
advance
();
101
}
102
103
inline
uint64_t
104
getExecutingAsid
(
ThreadContext
*tc)
105
{
106
return
DTB_ASN_ASN
(tc->
readMiscRegNoEffect
(
IPR_DTB_ASN
));
107
}
108
109
}
// namespace AlphaISA
110
111
#endif // __ARCH_ALPHA_UTILITY_HH__
AlphaISA::PcPAL
bool PcPAL(Addr addr)
Definition:
utility.hh:62
logging.hh
AlphaISA::K1SegEnd
const Addr K1SegEnd
Definition:
isa_traits.hh:71
AlphaISA::DTB_ASN_ASN
int DTB_ASN_ASN(uint64_t reg)
Definition:
ev5.hh:70
AlphaISA::USegBase
const Addr USegBase
Definition:
isa_traits.hh:62
AlphaISA::K1SegBase
const Addr K1SegBase
Definition:
isa_traits.hh:70
registers.hh
AlphaISA::IsUSeg
bool IsUSeg(Addr a)
Definition:
utility.hh:72
ArmISA::a
Bitfield< 8 > a
Definition:
miscregs_types.hh:65
AlphaISA::USegEnd
const Addr USegEnd
Definition:
isa_traits.hh:63
addr
ip6_addr_t addr
Definition:
inet.hh:335
AlphaISA::getArgument
uint64_t getArgument(ThreadContext *tc, int &number, uint16_t size, bool fp)
Definition:
utility.cc:41
AlphaISA::PteShift
const Addr PteShift
Definition:
isa_traits.hh:56
RefCountingPtr< StaticInst >
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Definition:
thread_context.hh:93
types.hh
AlphaISA::K0SegEnd
const Addr K0SegEnd
Definition:
isa_traits.hh:67
GenericISA::SimplePCState::advance
void advance()
Definition:
types.hh:178
MipsISA::pc
Bitfield< 4 > pc
Definition:
pra_constants.hh:242
ev5.hh
AlphaISA::PteAddr
Addr PteAddr(Addr a)
Definition:
utility.hh:69
static_inst.hh
AlphaISA::skipFunction
void skipFunction(ThreadContext *tc)
Definition:
utility.cc:101
AlphaISA::PteMask
const Addr PteMask
Definition:
isa_traits.hh:59
AlphaISA::copyMiscRegs
void copyMiscRegs(ThreadContext *src, ThreadContext *dest)
Definition:
utility.cc:86
AlphaISA::TruncPage
Addr TruncPage(Addr addr)
Definition:
utility.hh:82
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition:
types.hh:142
AlphaISA::inUserMode
bool inUserMode(ThreadContext *tc)
Definition:
utility.hh:56
AlphaISA::advancePC
void advancePC(PCState &pc, const StaticInstPtr &inst)
Definition:
utility.hh:98
AlphaISA::buildRetPC
PCState buildRetPC(const PCState &curPC, const PCState &callPC)
Definition:
utility.hh:46
AlphaISA::getExecutingAsid
uint64_t getExecutingAsid(ThreadContext *tc)
Definition:
utility.hh:104
AlphaISA::PageBytes
const Addr PageBytes
Definition:
isa_traits.hh:47
AlphaISA::initIPRs
void initIPRs(ThreadContext *tc, int cpuId)
Definition:
ev5.cc:69
GenericISA::SimplePCState
Definition:
types.hh:141
thread_context.hh
ThreadContext::readMiscRegNoEffect
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
AlphaISA::PCState
GenericISA::SimplePCState< MachInst > PCState
Definition:
types.hh:43
AlphaISA::IsK0Seg
bool IsK0Seg(Addr a)
Definition:
utility.hh:75
AlphaISA::copyRegs
void copyRegs(ThreadContext *src, ThreadContext *dest)
Definition:
utility.cc:65
AlphaISA::IPR_DTB_CM
Definition:
ipr.hh:198
AlphaISA
Definition:
decoder.cc:33
ArmISA::fp
Bitfield< 19, 16 > fp
Definition:
miscregs_types.hh:175
AlphaISA::IsK1Seg
bool IsK1Seg(Addr a)
Definition:
utility.hh:79
AlphaISA::RoundPage
Addr RoundPage(Addr addr)
Definition:
utility.hh:86
AlphaISA::K0Seg2Phys
Addr K0Seg2Phys(Addr addr)
Definition:
utility.hh:76
isa_traits.hh
AlphaISA::IPR_DTB_ASN
Definition:
ipr.hh:197
AlphaISA::K0SegBase
const Addr K0SegBase
Definition:
isa_traits.hh:66
Generated on Fri Feb 28 2020 16:26:56 for gem5 by
doxygen
1.8.13