gem5
v20.1.0.0
arch
mips
types.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2007 MIPS Technologies, Inc.
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_MIPS_TYPES_HH__
30
#define __ARCH_MIPS_TYPES_HH__
31
32
#include "
arch/generic/types.hh
"
33
#include "
base/types.hh
"
34
35
namespace
MipsISA
36
{
37
38
typedef
uint32_t
MachInst
;
39
typedef
uint64_t
ExtMachInst
;
40
41
typedef
GenericISA::DelaySlotPCState<MachInst>
PCState
;
42
43
//used in FP convert & round function
44
enum
ConvertType
{
45
SINGLE_TO_DOUBLE
,
46
SINGLE_TO_WORD
,
47
SINGLE_TO_LONG
,
48
49
DOUBLE_TO_SINGLE
,
50
DOUBLE_TO_WORD
,
51
DOUBLE_TO_LONG
,
52
53
LONG_TO_SINGLE
,
54
LONG_TO_DOUBLE
,
55
LONG_TO_WORD
,
56
LONG_TO_PS
,
57
58
WORD_TO_SINGLE
,
59
WORD_TO_DOUBLE
,
60
WORD_TO_LONG
,
61
WORD_TO_PS
,
62
63
PL_TO_SINGLE
,
64
PU_TO_SINGLE
65
};
66
67
//used in FP convert & round function
68
enum
RoundMode
{
69
RND_ZERO
,
70
RND_DOWN
,
71
RND_UP
,
72
RND_NEAREST
73
};
74
75
struct
CoreSpecific
{
76
CoreSpecific
()
77
:
CP0_IntCtl_IPTI
(0),
CP0_IntCtl_IPPCI
(0),
CP0_SrsCtl_HSS
(0),
78
CP0_PRId_CompanyOptions
(0),
CP0_PRId_CompanyID
(0),
79
CP0_PRId_ProcessorID
(0),
CP0_PRId_Revision
(0),
80
CP0_EBase_CPUNum
(0),
CP0_Config_BE
(0),
CP0_Config_AT
(0),
81
CP0_Config_AR
(0),
CP0_Config_MT
(0),
CP0_Config_VI
(0),
82
CP0_Config1_M
(0),
CP0_Config1_MMU
(0),
CP0_Config1_IS
(0),
83
CP0_Config1_IL
(0),
CP0_Config1_IA
(0),
CP0_Config1_DS
(0),
84
CP0_Config1_DL
(0),
CP0_Config1_DA
(0),
CP0_Config1_C2
(false),
85
CP0_Config1_MD
(false),
CP0_Config1_PC
(false),
CP0_Config1_WR
(false),
86
CP0_Config1_CA
(false),
CP0_Config1_EP
(false),
CP0_Config1_FP
(false),
87
CP0_Config2_M
(false),
CP0_Config2_TU
(0),
CP0_Config2_TS
(0),
88
CP0_Config2_TL
(0),
CP0_Config2_TA
(0),
CP0_Config2_SU
(0),
89
CP0_Config2_SS
(0),
CP0_Config2_SL
(0),
CP0_Config2_SA
(0),
90
CP0_Config3_M
(false),
CP0_Config3_DSPP
(false),
CP0_Config3_LPA
(false),
91
CP0_Config3_VEIC
(false),
CP0_Config3_VInt
(false),
92
CP0_Config3_SP
(false),
CP0_Config3_MT
(false),
CP0_Config3_SM
(false),
93
CP0_Config3_TL
(false),
CP0_WatchHi_M
(false),
CP0_PerfCtr_M
(false),
94
CP0_PerfCtr_W
(false),
CP0_PRId
(0),
CP0_Config
(0),
CP0_Config1
(0),
95
CP0_Config2
(0),
CP0_Config3
(0)
96
{ }
97
98
// MIPS CP0 State - First individual variables
99
// Page numbers refer to revision 2.50 (July 2005) of the MIPS32 ARM,
100
// Volume III (PRA)
101
unsigned
CP0_IntCtl_IPTI
;
// Page 93, IP Timer Interrupt
102
unsigned
CP0_IntCtl_IPPCI
;
// Page 94, IP Performance Counter Interrupt
103
unsigned
CP0_SrsCtl_HSS
;
// Page 95, Highest Implemented Shadow Set
104
unsigned
CP0_PRId_CompanyOptions
;
// Page 105, Manufacture options
105
unsigned
CP0_PRId_CompanyID
;
// Page 105, Company ID - (0-255, 1=>MIPS)
106
unsigned
CP0_PRId_ProcessorID
;
// Page 105
107
unsigned
CP0_PRId_Revision
;
// Page 105
108
unsigned
CP0_EBase_CPUNum
;
// Page 106, CPU Number in a multiprocessor
109
//system
110
unsigned
CP0_Config_BE
;
// Page 108, Big/Little Endian mode
111
unsigned
CP0_Config_AT
;
//Page 109
112
unsigned
CP0_Config_AR
;
//Page 109
113
unsigned
CP0_Config_MT
;
//Page 109
114
unsigned
CP0_Config_VI
;
//Page 109
115
unsigned
CP0_Config1_M
;
// Page 110
116
unsigned
CP0_Config1_MMU
;
// Page 110
117
unsigned
CP0_Config1_IS
;
// Page 110
118
unsigned
CP0_Config1_IL
;
// Page 111
119
unsigned
CP0_Config1_IA
;
// Page 111
120
unsigned
CP0_Config1_DS
;
// Page 111
121
unsigned
CP0_Config1_DL
;
// Page 112
122
unsigned
CP0_Config1_DA
;
// Page 112
123
bool
CP0_Config1_C2
;
// Page 112
124
bool
CP0_Config1_MD
;
// Page 112 - Technically not used in MIPS32
125
bool
CP0_Config1_PC
;
// Page 112
126
bool
CP0_Config1_WR
;
// Page 113
127
bool
CP0_Config1_CA
;
// Page 113
128
bool
CP0_Config1_EP
;
// Page 113
129
bool
CP0_Config1_FP
;
// Page 113
130
bool
CP0_Config2_M
;
// Page 114
131
unsigned
CP0_Config2_TU
;
// Page 114
132
unsigned
CP0_Config2_TS
;
// Page 114
133
unsigned
CP0_Config2_TL
;
// Page 115
134
unsigned
CP0_Config2_TA
;
// Page 115
135
unsigned
CP0_Config2_SU
;
// Page 115
136
unsigned
CP0_Config2_SS
;
// Page 115
137
unsigned
CP0_Config2_SL
;
// Page 116
138
unsigned
CP0_Config2_SA
;
// Page 116
139
bool
CP0_Config3_M
;
140
bool
CP0_Config3_DSPP
;
// Page 117
141
bool
CP0_Config3_LPA
;
// Page 117
142
bool
CP0_Config3_VEIC
;
// Page 118
143
bool
CP0_Config3_VInt
;
// Page 118
144
bool
CP0_Config3_SP
;
// Page 118
145
bool
CP0_Config3_MT
;
// Page 119
146
bool
CP0_Config3_SM
;
// Page 119
147
bool
CP0_Config3_TL
;
// Page 119
148
149
bool
CP0_WatchHi_M
;
// Page 124
150
bool
CP0_PerfCtr_M
;
// Page 130
151
bool
CP0_PerfCtr_W
;
// Page 130
152
153
154
// Then, whole registers
155
unsigned
CP0_PRId
;
156
unsigned
CP0_Config
;
157
unsigned
CP0_Config1
;
158
unsigned
CP0_Config2
;
159
unsigned
CP0_Config3
;
160
};
161
162
}
// namespace MipsISA
163
#endif
MipsISA::CoreSpecific::CP0_Config3_DSPP
bool CP0_Config3_DSPP
Definition:
types.hh:140
MipsISA::CoreSpecific::CP0_Config3
unsigned CP0_Config3
Definition:
types.hh:159
MipsISA::CoreSpecific::CP0_SrsCtl_HSS
unsigned CP0_SrsCtl_HSS
Definition:
types.hh:103
MipsISA::WORD_TO_LONG
@ WORD_TO_LONG
Definition:
types.hh:60
MipsISA::CoreSpecific::CP0_Config1_WR
bool CP0_Config1_WR
Definition:
types.hh:126
MipsISA::CoreSpecific::CP0_PerfCtr_W
bool CP0_PerfCtr_W
Definition:
types.hh:151
MipsISA::RND_UP
@ RND_UP
Definition:
types.hh:71
MipsISA::CoreSpecific::CP0_Config1_PC
bool CP0_Config1_PC
Definition:
types.hh:125
MipsISA::CoreSpecific::CP0_EBase_CPUNum
unsigned CP0_EBase_CPUNum
Definition:
types.hh:108
MipsISA::CoreSpecific::CP0_PRId_CompanyID
unsigned CP0_PRId_CompanyID
Definition:
types.hh:105
MipsISA::CoreSpecific::CP0_Config3_SP
bool CP0_Config3_SP
Definition:
types.hh:144
MipsISA::CoreSpecific::CP0_Config_AT
unsigned CP0_Config_AT
Definition:
types.hh:111
MipsISA::DOUBLE_TO_WORD
@ DOUBLE_TO_WORD
Definition:
types.hh:50
MipsISA::CoreSpecific::CP0_Config1_IS
unsigned CP0_Config1_IS
Definition:
types.hh:117
MipsISA::CoreSpecific::CP0_Config1_DA
unsigned CP0_Config1_DA
Definition:
types.hh:122
MipsISA::CoreSpecific::CP0_PRId_ProcessorID
unsigned CP0_PRId_ProcessorID
Definition:
types.hh:106
MipsISA::CoreSpecific::CP0_Config1_EP
bool CP0_Config1_EP
Definition:
types.hh:128
MipsISA::CoreSpecific::CP0_IntCtl_IPPCI
unsigned CP0_IntCtl_IPPCI
Definition:
types.hh:102
MipsISA::CoreSpecific::CP0_Config2_TL
unsigned CP0_Config2_TL
Definition:
types.hh:133
MipsISA::PU_TO_SINGLE
@ PU_TO_SINGLE
Definition:
types.hh:64
MipsISA::CoreSpecific::CP0_Config1_MD
bool CP0_Config1_MD
Definition:
types.hh:124
MipsISA::CoreSpecific::CoreSpecific
CoreSpecific()
Definition:
types.hh:76
MipsISA::CoreSpecific::CP0_PRId
unsigned CP0_PRId
Definition:
types.hh:155
MipsISA::CoreSpecific::CP0_Config2_SS
unsigned CP0_Config2_SS
Definition:
types.hh:136
MipsISA::WORD_TO_DOUBLE
@ WORD_TO_DOUBLE
Definition:
types.hh:59
MipsISA::LONG_TO_DOUBLE
@ LONG_TO_DOUBLE
Definition:
types.hh:54
MipsISA::SINGLE_TO_DOUBLE
@ SINGLE_TO_DOUBLE
Definition:
types.hh:45
MipsISA::CoreSpecific::CP0_PRId_Revision
unsigned CP0_PRId_Revision
Definition:
types.hh:107
MipsISA::CoreSpecific::CP0_Config2_SA
unsigned CP0_Config2_SA
Definition:
types.hh:138
MipsISA::CoreSpecific::CP0_PRId_CompanyOptions
unsigned CP0_PRId_CompanyOptions
Definition:
types.hh:104
MipsISA::CoreSpecific::CP0_Config2_TU
unsigned CP0_Config2_TU
Definition:
types.hh:131
MipsISA::CoreSpecific::CP0_Config_BE
unsigned CP0_Config_BE
Definition:
types.hh:110
MipsISA
Definition:
decoder.cc:31
MipsISA::CoreSpecific::CP0_Config3_SM
bool CP0_Config3_SM
Definition:
types.hh:146
MipsISA::PL_TO_SINGLE
@ PL_TO_SINGLE
Definition:
types.hh:63
MipsISA::CoreSpecific::CP0_Config3_TL
bool CP0_Config3_TL
Definition:
types.hh:147
MipsISA::CoreSpecific::CP0_Config3_VEIC
bool CP0_Config3_VEIC
Definition:
types.hh:142
MipsISA::SINGLE_TO_LONG
@ SINGLE_TO_LONG
Definition:
types.hh:47
MipsISA::CoreSpecific::CP0_PerfCtr_M
bool CP0_PerfCtr_M
Definition:
types.hh:150
MipsISA::CoreSpecific::CP0_Config2_SL
unsigned CP0_Config2_SL
Definition:
types.hh:137
MipsISA::CoreSpecific::CP0_Config1_DL
unsigned CP0_Config1_DL
Definition:
types.hh:121
MipsISA::CoreSpecific::CP0_Config1_DS
unsigned CP0_Config1_DS
Definition:
types.hh:120
MipsISA::DOUBLE_TO_LONG
@ DOUBLE_TO_LONG
Definition:
types.hh:51
MipsISA::LONG_TO_SINGLE
@ LONG_TO_SINGLE
Definition:
types.hh:53
MipsISA::RND_NEAREST
@ RND_NEAREST
Definition:
types.hh:72
MipsISA::RND_ZERO
@ RND_ZERO
Definition:
types.hh:69
MipsISA::MachInst
uint32_t MachInst
Definition:
types.hh:38
MipsISA::CoreSpecific::CP0_Config1_M
unsigned CP0_Config1_M
Definition:
types.hh:115
MipsISA::CoreSpecific::CP0_Config3_VInt
bool CP0_Config3_VInt
Definition:
types.hh:143
MipsISA::WORD_TO_SINGLE
@ WORD_TO_SINGLE
Definition:
types.hh:58
MipsISA::CoreSpecific::CP0_IntCtl_IPTI
unsigned CP0_IntCtl_IPTI
Definition:
types.hh:101
MipsISA::CoreSpecific::CP0_Config
unsigned CP0_Config
Definition:
types.hh:156
MipsISA::CoreSpecific::CP0_Config_VI
unsigned CP0_Config_VI
Definition:
types.hh:114
MipsISA::LONG_TO_PS
@ LONG_TO_PS
Definition:
types.hh:56
MipsISA::RND_DOWN
@ RND_DOWN
Definition:
types.hh:70
MipsISA::LONG_TO_WORD
@ LONG_TO_WORD
Definition:
types.hh:55
MipsISA::CoreSpecific::CP0_Config1_CA
bool CP0_Config1_CA
Definition:
types.hh:127
GenericISA::DelaySlotPCState
Definition:
types.hh:312
MipsISA::CoreSpecific::CP0_Config2
unsigned CP0_Config2
Definition:
types.hh:158
MipsISA::CoreSpecific::CP0_Config1_FP
bool CP0_Config1_FP
Definition:
types.hh:129
MipsISA::CoreSpecific
Definition:
types.hh:75
types.hh
MipsISA::WORD_TO_PS
@ WORD_TO_PS
Definition:
types.hh:61
MipsISA::SINGLE_TO_WORD
@ SINGLE_TO_WORD
Definition:
types.hh:46
MipsISA::CoreSpecific::CP0_Config1_C2
bool CP0_Config1_C2
Definition:
types.hh:123
MipsISA::ConvertType
ConvertType
Definition:
types.hh:44
MipsISA::CoreSpecific::CP0_Config_MT
unsigned CP0_Config_MT
Definition:
types.hh:113
MipsISA::PCState
GenericISA::DelaySlotPCState< MachInst > PCState
Definition:
types.hh:41
types.hh
MipsISA::RoundMode
RoundMode
Definition:
types.hh:68
MipsISA::CoreSpecific::CP0_Config1_IL
unsigned CP0_Config1_IL
Definition:
types.hh:118
MipsISA::CoreSpecific::CP0_Config3_M
bool CP0_Config3_M
Definition:
types.hh:139
MipsISA::CoreSpecific::CP0_Config2_M
bool CP0_Config2_M
Definition:
types.hh:130
MipsISA::CoreSpecific::CP0_WatchHi_M
bool CP0_WatchHi_M
Definition:
types.hh:149
MipsISA::CoreSpecific::CP0_Config1
unsigned CP0_Config1
Definition:
types.hh:157
MipsISA::CoreSpecific::CP0_Config1_IA
unsigned CP0_Config1_IA
Definition:
types.hh:119
MipsISA::CoreSpecific::CP0_Config1_MMU
unsigned CP0_Config1_MMU
Definition:
types.hh:116
MipsISA::CoreSpecific::CP0_Config3_LPA
bool CP0_Config3_LPA
Definition:
types.hh:141
MipsISA::CoreSpecific::CP0_Config2_SU
unsigned CP0_Config2_SU
Definition:
types.hh:135
MipsISA::DOUBLE_TO_SINGLE
@ DOUBLE_TO_SINGLE
Definition:
types.hh:49
MipsISA::CoreSpecific::CP0_Config2_TS
unsigned CP0_Config2_TS
Definition:
types.hh:132
MipsISA::CoreSpecific::CP0_Config_AR
unsigned CP0_Config_AR
Definition:
types.hh:112
MipsISA::CoreSpecific::CP0_Config3_MT
bool CP0_Config3_MT
Definition:
types.hh:145
MipsISA::CoreSpecific::CP0_Config2_TA
unsigned CP0_Config2_TA
Definition:
types.hh:134
MipsISA::ExtMachInst
uint64_t ExtMachInst
Definition:
types.hh:39
Generated on Wed Sep 30 2020 14:02:01 for gem5 by
doxygen
1.8.17