gem5
v20.0.0.2
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
+
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
+
Enumerations
_
a
b
c
d
e
f
g
h
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
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
arch
mips
isa_traits.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2003-2005 The Regents of The University of Michigan
3
* Copyright (c) 2007 MIPS Technologies, Inc.
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions are
8
* met: redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer;
10
* redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution;
13
* neither the name of the copyright holders nor the names of its
14
* contributors may be used to endorse or promote products derived from
15
* this software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
*/
29
30
#ifndef __ARCH_MIPS_ISA_TRAITS_HH__
31
#define __ARCH_MIPS_ISA_TRAITS_HH__
32
33
#include "
arch/mips/types.hh
"
34
#include "
base/types.hh
"
35
#include "
cpu/static_inst_fwd.hh
"
36
37
namespace
MipsISA
38
{
39
40
const
ByteOrder
GuestByteOrder
=
LittleEndianByteOrder
;
41
42
StaticInstPtr
decodeInst
(
ExtMachInst
);
43
44
const
Addr
PageShift
= 13;
45
const
Addr
PageBytes
=
ULL
(1) <<
PageShift
;
46
const
Addr
Page_Mask
= ~(PageBytes - 1);
47
const
Addr
PageOffset
= PageBytes - 1;
48
49
51
//
52
// Translation stuff
53
//
54
55
const
Addr
PteShift
= 3;
56
const
Addr
NPtePageShift
= PageShift -
PteShift
;
57
const
Addr
NPtePage
=
ULL
(1) <<
NPtePageShift
;
58
const
Addr
PteMask
= NPtePage - 1;
59
63
// User Segment - Mapped
64
const
Addr
USegBase
=
ULL
(0x0);
65
const
Addr
USegEnd
=
ULL
(0x7FFFFFFF);
66
67
// Kernel Segment 0 - Unmapped
68
const
Addr
KSeg0End
=
ULL
(0x9FFFFFFF);
69
const
Addr
KSeg0Base
=
ULL
(0x80000000);
70
const
Addr
KSeg0Mask
=
ULL
(0x1FFFFFFF);
71
72
// Kernel Segment 1 - Unmapped, Uncached
73
const
Addr
KSeg1End
=
ULL
(0xBFFFFFFF);
74
const
Addr
KSeg1Base
=
ULL
(0xA0000000);
75
const
Addr
KSeg1Mask
=
ULL
(0x1FFFFFFF);
76
77
// Kernel/Supervisor Segment - Mapped
78
const
Addr
KSSegEnd
=
ULL
(0xDFFFFFFF);
79
const
Addr
KSSegBase
=
ULL
(0xC0000000);
80
81
// Kernel Segment 3 - Mapped
82
const
Addr
KSeg3End
=
ULL
(0xFFFFFFFF);
83
const
Addr
KSeg3Base
=
ULL
(0xE0000000);
84
85
86
inline
Addr
Phys2K0Seg
(
Addr
addr
)
87
{
88
return
addr |
KSeg0Base
;
89
}
90
91
92
const
unsigned
VABits
= 32;
93
const
unsigned
PABits
= 32;
// Is this correct?
94
const
Addr
VAddrImplMask
= (
ULL
(1) <<
VABits
) - 1;
95
const
Addr
VAddrUnImplMask
= ~VAddrImplMask;
96
inline
Addr
VAddrImpl
(
Addr
a
) {
return
a &
VAddrImplMask
; }
97
inline
Addr
VAddrVPN
(
Addr
a
) {
return
a >>
MipsISA::PageShift
; }
98
inline
Addr
VAddrOffset
(
Addr
a
) {
return
a &
MipsISA::PageOffset
; }
99
100
const
Addr
PAddrImplMask
= (
ULL
(1) <<
PABits
) - 1;
101
103
//
104
// Interrupt levels
105
//
106
enum
InterruptLevels
107
{
108
INTLEVEL_SOFTWARE_MIN
= 4,
109
INTLEVEL_SOFTWARE_MAX
= 19,
110
111
INTLEVEL_EXTERNAL_MIN
= 20,
112
INTLEVEL_EXTERNAL_MAX
= 34,
113
114
INTLEVEL_IRQ0
= 20,
115
INTLEVEL_IRQ1
= 21,
116
INTINDEX_ETHERNET
= 0,
117
INTINDEX_SCSI
= 1,
118
INTLEVEL_IRQ2
= 22,
119
INTLEVEL_IRQ3
= 23,
120
121
INTLEVEL_SERIAL
= 33,
122
123
NumInterruptLevels
=
INTLEVEL_EXTERNAL_MAX
124
};
125
126
// MIPS modes
127
enum
mode_type
128
{
129
mode_kernel
= 0,
// kernel
130
mode_supervisor
= 1,
// supervisor
131
mode_user
= 2,
// user mode
132
mode_debug
= 3,
// debug mode
133
mode_number
// number of modes
134
};
135
136
const
int
ANNOTE_NONE
= 0;
137
const
uint32_t
ITOUCH_ANNOTE
= 0xffffffff;
138
139
const
bool
HasUnalignedMemAcc
=
true
;
140
141
const
bool
CurThreadInfoImplemented
=
false
;
142
const
int
CurThreadInfoReg
= -1;
143
144
}
// namespace MipsISA
145
146
#endif // __ARCH_MIPS_ISA_TRAITS_HH__
MipsISA::KSeg0Base
const Addr KSeg0Base
Definition:
isa_traits.hh:69
MipsISA::NumInterruptLevels
Definition:
isa_traits.hh:123
MipsISA::INTLEVEL_IRQ3
Definition:
isa_traits.hh:119
MipsISA::decodeInst
StaticInstPtr decodeInst(ExtMachInst)
MipsISA::Phys2K0Seg
Addr Phys2K0Seg(Addr addr)
Definition:
isa_traits.hh:86
MipsISA::KSeg1Mask
const Addr KSeg1Mask
Definition:
isa_traits.hh:75
MipsISA::KSeg0End
const Addr KSeg0End
Definition:
isa_traits.hh:68
static_inst_fwd.hh
MipsISA::ExtMachInst
uint64_t ExtMachInst
Definition:
types.hh:39
MipsISA::mode_supervisor
Definition:
isa_traits.hh:130
addr
ip6_addr_t addr
Definition:
inet.hh:330
MipsISA::InterruptLevels
InterruptLevels
Definition:
isa_traits.hh:106
MipsISA::ITOUCH_ANNOTE
const uint32_t ITOUCH_ANNOTE
Definition:
isa_traits.hh:137
MipsISA::INTINDEX_SCSI
Definition:
isa_traits.hh:117
RefCountingPtr
If you want a reference counting pointer to a mutable object, create it like this: ...
Definition:
refcnt.hh:118
MipsISA::mode_number
Definition:
isa_traits.hh:133
MipsISA::USegEnd
const Addr USegEnd
Definition:
isa_traits.hh:65
MipsISA::VABits
const unsigned VABits
Definition:
isa_traits.hh:92
MipsISA::mode_type
mode_type
Definition:
isa_traits.hh:127
MipsISA::CurThreadInfoImplemented
const bool CurThreadInfoImplemented
Definition:
isa_traits.hh:141
MipsISA::INTINDEX_ETHERNET
Definition:
isa_traits.hh:116
MipsISA::VAddrVPN
Addr VAddrVPN(Addr a)
Definition:
isa_traits.hh:97
MipsISA::KSSegEnd
const Addr KSSegEnd
Definition:
isa_traits.hh:78
MipsISA::VAddrImpl
Addr VAddrImpl(Addr a)
Definition:
isa_traits.hh:96
MipsISA::mode_user
Definition:
isa_traits.hh:131
MipsISA::mode_kernel
Definition:
isa_traits.hh:129
ByteOrder
ByteOrder
Definition:
types.hh:245
MipsISA::NPtePage
const Addr NPtePage
Definition:
isa_traits.hh:57
types.hh
MipsISA::KSeg3Base
const Addr KSeg3Base
Definition:
isa_traits.hh:83
MipsISA::ANNOTE_NONE
const int ANNOTE_NONE
Definition:
isa_traits.hh:136
types.hh
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,16,32,64}_t.
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition:
types.hh:140
MipsISA::INTLEVEL_SERIAL
Definition:
isa_traits.hh:121
MipsISA::INTLEVEL_EXTERNAL_MAX
Definition:
isa_traits.hh:112
ULL
#define ULL(N)
uint64_t constant
Definition:
types.hh:48
MipsISA::INTLEVEL_IRQ1
Definition:
isa_traits.hh:115
MipsISA::USegBase
const Addr USegBase
Definition:
isa_traits.hh:64
MipsISA::VAddrUnImplMask
const Addr VAddrUnImplMask
Definition:
isa_traits.hh:95
MipsISA::PABits
const unsigned PABits
Definition:
isa_traits.hh:93
MipsISA::KSeg3End
const Addr KSeg3End
Definition:
isa_traits.hh:82
MipsISA::PAddrImplMask
const Addr PAddrImplMask
Definition:
isa_traits.hh:100
MipsISA::KSeg1Base
const Addr KSeg1Base
Definition:
isa_traits.hh:74
MipsISA::Page_Mask
const Addr Page_Mask
Definition:
isa_traits.hh:46
MipsISA::CurThreadInfoReg
const int CurThreadInfoReg
Definition:
isa_traits.hh:142
MipsISA::INTLEVEL_IRQ2
Definition:
isa_traits.hh:118
LittleEndianByteOrder
Definition:
types.hh:247
MipsISA::mode_debug
Definition:
isa_traits.hh:132
MipsISA::NPtePageShift
const Addr NPtePageShift
Definition:
isa_traits.hh:56
MipsISA
Definition:
decoder.cc:31
MipsISA::PteMask
const Addr PteMask
Definition:
isa_traits.hh:58
MipsISA::INTLEVEL_SOFTWARE_MAX
Definition:
isa_traits.hh:109
MipsISA::PageBytes
const Addr PageBytes
Definition:
isa_traits.hh:45
MipsISA::a
Bitfield< 13 > a
Definition:
mt_constants.hh:89
MipsISA::INTLEVEL_IRQ0
Definition:
isa_traits.hh:114
MipsISA::VAddrImplMask
const Addr VAddrImplMask
Definition:
isa_traits.hh:94
MipsISA::KSSegBase
const Addr KSSegBase
Definition:
isa_traits.hh:79
MipsISA::PageOffset
const Addr PageOffset
Definition:
isa_traits.hh:47
MipsISA::INTLEVEL_EXTERNAL_MIN
Definition:
isa_traits.hh:111
MipsISA::INTLEVEL_SOFTWARE_MIN
Definition:
isa_traits.hh:108
MipsISA::VAddrOffset
Addr VAddrOffset(Addr a)
Definition:
isa_traits.hh:98
MipsISA::KSeg0Mask
const Addr KSeg0Mask
Definition:
isa_traits.hh:70
MipsISA::PageShift
const Addr PageShift
Definition:
isa_traits.hh:44
MipsISA::HasUnalignedMemAcc
const bool HasUnalignedMemAcc
Definition:
isa_traits.hh:139
MipsISA::GuestByteOrder
const ByteOrder GuestByteOrder
Definition:
isa_traits.hh:40
MipsISA::KSeg1End
const Addr KSeg1End
Definition:
isa_traits.hh:73
MipsISA::PteShift
const Addr PteShift
Definition:
isa_traits.hh:55
Generated on Mon Jun 8 2020 15:34:39 for gem5 by
doxygen
1.8.13