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
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
* Authors: Gabe Black
30
* Korey Sewell
31
* Jaidev Patwardhan
32
*/
33
34
#ifndef __ARCH_MIPS_ISA_TRAITS_HH__
35
#define __ARCH_MIPS_ISA_TRAITS_HH__
36
37
#include "
arch/mips/types.hh
"
38
#include "
base/types.hh
"
39
#include "
cpu/static_inst_fwd.hh
"
40
41
namespace
MipsISA
42
{
43
44
const
ByteOrder
GuestByteOrder
=
LittleEndianByteOrder
;
45
46
StaticInstPtr
decodeInst
(
ExtMachInst
);
47
48
const
Addr
PageShift
= 13;
49
const
Addr
PageBytes
=
ULL
(1) <<
PageShift
;
50
const
Addr
Page_Mask
= ~(PageBytes - 1);
51
const
Addr
PageOffset
= PageBytes - 1;
52
53
55
//
56
// Translation stuff
57
//
58
59
const
Addr
PteShift
= 3;
60
const
Addr
NPtePageShift
= PageShift -
PteShift
;
61
const
Addr
NPtePage
=
ULL
(1) <<
NPtePageShift
;
62
const
Addr
PteMask
= NPtePage - 1;
63
67
// User Segment - Mapped
68
const
Addr
USegBase
=
ULL
(0x0);
69
const
Addr
USegEnd
=
ULL
(0x7FFFFFFF);
70
71
// Kernel Segment 0 - Unmapped
72
const
Addr
KSeg0End
=
ULL
(0x9FFFFFFF);
73
const
Addr
KSeg0Base
=
ULL
(0x80000000);
74
const
Addr
KSeg0Mask
=
ULL
(0x1FFFFFFF);
75
76
// Kernel Segment 1 - Unmapped, Uncached
77
const
Addr
KSeg1End
=
ULL
(0xBFFFFFFF);
78
const
Addr
KSeg1Base
=
ULL
(0xA0000000);
79
const
Addr
KSeg1Mask
=
ULL
(0x1FFFFFFF);
80
81
// Kernel/Supervisor Segment - Mapped
82
const
Addr
KSSegEnd
=
ULL
(0xDFFFFFFF);
83
const
Addr
KSSegBase
=
ULL
(0xC0000000);
84
85
// Kernel Segment 3 - Mapped
86
const
Addr
KSeg3End
=
ULL
(0xFFFFFFFF);
87
const
Addr
KSeg3Base
=
ULL
(0xE0000000);
88
89
90
inline
Addr
Phys2K0Seg
(
Addr
addr
)
91
{
92
return
addr |
KSeg0Base
;
93
}
94
95
96
const
unsigned
VABits
= 32;
97
const
unsigned
PABits
= 32;
// Is this correct?
98
const
Addr
VAddrImplMask
= (
ULL
(1) <<
VABits
) - 1;
99
const
Addr
VAddrUnImplMask
= ~VAddrImplMask;
100
inline
Addr
VAddrImpl
(
Addr
a
) {
return
a &
VAddrImplMask
; }
101
inline
Addr
VAddrVPN
(
Addr
a
) {
return
a >>
MipsISA::PageShift
; }
102
inline
Addr
VAddrOffset
(
Addr
a
) {
return
a &
MipsISA::PageOffset
; }
103
104
const
Addr
PAddrImplMask
= (
ULL
(1) <<
PABits
) - 1;
105
107
//
108
// Interrupt levels
109
//
110
enum
InterruptLevels
111
{
112
INTLEVEL_SOFTWARE_MIN
= 4,
113
INTLEVEL_SOFTWARE_MAX
= 19,
114
115
INTLEVEL_EXTERNAL_MIN
= 20,
116
INTLEVEL_EXTERNAL_MAX
= 34,
117
118
INTLEVEL_IRQ0
= 20,
119
INTLEVEL_IRQ1
= 21,
120
INTINDEX_ETHERNET
= 0,
121
INTINDEX_SCSI
= 1,
122
INTLEVEL_IRQ2
= 22,
123
INTLEVEL_IRQ3
= 23,
124
125
INTLEVEL_SERIAL
= 33,
126
127
NumInterruptLevels
=
INTLEVEL_EXTERNAL_MAX
128
};
129
130
// MIPS modes
131
enum
mode_type
132
{
133
mode_kernel
= 0,
// kernel
134
mode_supervisor
= 1,
// supervisor
135
mode_user
= 2,
// user mode
136
mode_debug
= 3,
// debug mode
137
mode_number
// number of modes
138
};
139
140
const
int
ANNOTE_NONE
= 0;
141
const
uint32_t
ITOUCH_ANNOTE
= 0xffffffff;
142
143
const
bool
HasUnalignedMemAcc
=
true
;
144
145
const
bool
CurThreadInfoImplemented
=
false
;
146
const
int
CurThreadInfoReg
= -1;
147
148
}
// namespace MipsISA
149
150
#endif // __ARCH_MIPS_ISA_TRAITS_HH__
MipsISA::KSeg0Base
const Addr KSeg0Base
Definition:
isa_traits.hh:73
MipsISA::NumInterruptLevels
Definition:
isa_traits.hh:127
MipsISA::INTLEVEL_IRQ3
Definition:
isa_traits.hh:123
MipsISA::decodeInst
StaticInstPtr decodeInst(ExtMachInst)
MipsISA::Phys2K0Seg
Addr Phys2K0Seg(Addr addr)
Definition:
isa_traits.hh:90
MipsISA::KSeg1Mask
const Addr KSeg1Mask
Definition:
isa_traits.hh:79
MipsISA::KSeg0End
const Addr KSeg0End
Definition:
isa_traits.hh:72
static_inst_fwd.hh
MipsISA::ExtMachInst
uint64_t ExtMachInst
Definition:
types.hh:41
MipsISA::mode_supervisor
Definition:
isa_traits.hh:134
addr
ip6_addr_t addr
Definition:
inet.hh:335
MipsISA::InterruptLevels
InterruptLevels
Definition:
isa_traits.hh:110
MipsISA::ITOUCH_ANNOTE
const uint32_t ITOUCH_ANNOTE
Definition:
isa_traits.hh:141
MipsISA::INTINDEX_SCSI
Definition:
isa_traits.hh:121
RefCountingPtr< StaticInst >
MipsISA::mode_number
Definition:
isa_traits.hh:137
MipsISA::USegEnd
const Addr USegEnd
Definition:
isa_traits.hh:69
MipsISA::VABits
const unsigned VABits
Definition:
isa_traits.hh:96
MipsISA::mode_type
mode_type
Definition:
isa_traits.hh:131
MipsISA::CurThreadInfoImplemented
const bool CurThreadInfoImplemented
Definition:
isa_traits.hh:145
MipsISA::INTINDEX_ETHERNET
Definition:
isa_traits.hh:120
MipsISA::VAddrVPN
Addr VAddrVPN(Addr a)
Definition:
isa_traits.hh:101
MipsISA::KSSegEnd
const Addr KSSegEnd
Definition:
isa_traits.hh:82
MipsISA::VAddrImpl
Addr VAddrImpl(Addr a)
Definition:
isa_traits.hh:100
MipsISA::mode_user
Definition:
isa_traits.hh:135
MipsISA::mode_kernel
Definition:
isa_traits.hh:133
ByteOrder
ByteOrder
Definition:
types.hh:247
MipsISA::NPtePage
const Addr NPtePage
Definition:
isa_traits.hh:61
types.hh
MipsISA::KSeg3Base
const Addr KSeg3Base
Definition:
isa_traits.hh:87
MipsISA::ANNOTE_NONE
const int ANNOTE_NONE
Definition:
isa_traits.hh:140
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:142
MipsISA::INTLEVEL_SERIAL
Definition:
isa_traits.hh:125
MipsISA::INTLEVEL_EXTERNAL_MAX
Definition:
isa_traits.hh:116
ULL
#define ULL(N)
uint64_t constant
Definition:
types.hh:50
MipsISA::INTLEVEL_IRQ1
Definition:
isa_traits.hh:119
MipsISA::USegBase
const Addr USegBase
Definition:
isa_traits.hh:68
MipsISA::VAddrUnImplMask
const Addr VAddrUnImplMask
Definition:
isa_traits.hh:99
MipsISA::PABits
const unsigned PABits
Definition:
isa_traits.hh:97
MipsISA::KSeg3End
const Addr KSeg3End
Definition:
isa_traits.hh:86
MipsISA::PAddrImplMask
const Addr PAddrImplMask
Definition:
isa_traits.hh:104
MipsISA::KSeg1Base
const Addr KSeg1Base
Definition:
isa_traits.hh:78
MipsISA::Page_Mask
const Addr Page_Mask
Definition:
isa_traits.hh:50
MipsISA::CurThreadInfoReg
const int CurThreadInfoReg
Definition:
isa_traits.hh:146
MipsISA::INTLEVEL_IRQ2
Definition:
isa_traits.hh:122
LittleEndianByteOrder
Definition:
types.hh:249
MipsISA::mode_debug
Definition:
isa_traits.hh:136
MipsISA::NPtePageShift
const Addr NPtePageShift
Definition:
isa_traits.hh:60
MipsISA
Definition:
decoder.cc:33
MipsISA::PteMask
const Addr PteMask
Definition:
isa_traits.hh:62
MipsISA::INTLEVEL_SOFTWARE_MAX
Definition:
isa_traits.hh:113
MipsISA::PageBytes
const Addr PageBytes
Definition:
isa_traits.hh:49
MipsISA::a
Bitfield< 13 > a
Definition:
mt_constants.hh:92
MipsISA::INTLEVEL_IRQ0
Definition:
isa_traits.hh:118
MipsISA::VAddrImplMask
const Addr VAddrImplMask
Definition:
isa_traits.hh:98
MipsISA::KSSegBase
const Addr KSSegBase
Definition:
isa_traits.hh:83
MipsISA::PageOffset
const Addr PageOffset
Definition:
isa_traits.hh:51
MipsISA::INTLEVEL_EXTERNAL_MIN
Definition:
isa_traits.hh:115
MipsISA::INTLEVEL_SOFTWARE_MIN
Definition:
isa_traits.hh:112
MipsISA::VAddrOffset
Addr VAddrOffset(Addr a)
Definition:
isa_traits.hh:102
MipsISA::KSeg0Mask
const Addr KSeg0Mask
Definition:
isa_traits.hh:74
MipsISA::PageShift
const Addr PageShift
Definition:
isa_traits.hh:48
MipsISA::HasUnalignedMemAcc
const bool HasUnalignedMemAcc
Definition:
isa_traits.hh:143
MipsISA::GuestByteOrder
const ByteOrder GuestByteOrder
Definition:
isa_traits.hh:44
MipsISA::KSeg1End
const Addr KSeg1End
Definition:
isa_traits.hh:77
MipsISA::PteShift
const Addr PteShift
Definition:
isa_traits.hh:59
Generated on Fri Feb 28 2020 16:26:56 for gem5 by
doxygen
1.8.13