gem5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
arch
alpha
isa.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009 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: Gabe Black
29
*/
30
31
#ifndef __ARCH_ALPHA_ISA_HH__
32
#define __ARCH_ALPHA_ISA_HH__
33
34
#include <cstring>
35
#include <iostream>
36
#include <string>
37
38
#include "
arch/alpha/registers.hh
"
39
#include "
arch/alpha/types.hh
"
40
#include "
base/types.hh
"
41
#include "
sim/sim_object.hh
"
42
#include "
sim/system.hh
"
43
44
struct
AlphaISAParams;
45
class
BaseCPU
;
46
class
Checkpoint;
47
class
EventManager
;
48
class
ThreadContext
;
49
50
namespace
AlphaISA
51
{
52
class
ISA
:
public
SimObject
53
{
54
public
:
55
typedef
uint64_t
InternalProcReg
;
56
typedef
AlphaISAParams
Params
;
57
58
protected
:
59
// Parent system
60
System
*
system
;
61
62
uint64_t
fpcr
;
// floating point condition codes
63
uint64_t
uniq
;
// process-unique register
64
bool
lock_flag
;
// lock flag for LL/SC
65
Addr
lock_addr
;
// lock address for LL/SC
66
int
intr_flag
;
67
68
InternalProcReg
ipr
[
NumInternalProcRegs
];
// Internal processor regs
69
70
protected
:
71
InternalProcReg
readIpr
(
int
idx,
ThreadContext
*tc);
72
void
setIpr
(
int
idx,
InternalProcReg
val
,
ThreadContext
*tc);
73
74
public
:
75
76
MiscReg
readMiscRegNoEffect
(
int
misc_reg,
ThreadID
tid = 0)
const
;
77
MiscReg
readMiscReg
(
int
misc_reg,
ThreadContext
*tc,
ThreadID
tid = 0);
78
79
void
setMiscRegNoEffect
(
int
misc_reg,
const
MiscReg
&
val
,
80
ThreadID
tid = 0);
81
void
setMiscReg
(
int
misc_reg,
const
MiscReg
&
val
,
ThreadContext
*tc,
82
ThreadID
tid = 0);
83
84
void
85
clear
()
86
{
87
fpcr
= 0;
88
uniq
= 0;
89
lock_flag
= 0;
90
lock_addr
= 0;
91
intr_flag
= 0;
92
memset(
ipr
, 0,
sizeof
(
ipr
));
93
}
94
95
void
serialize
(
CheckpointOut
&cp)
const override
;
96
void
unserialize
(
CheckpointIn
&cp)
override
;
97
98
int
99
flattenIntIndex
(
int
reg
)
const
100
{
101
return
reg
;
102
}
103
104
int
105
flattenFloatIndex
(
int
reg
)
const
106
{
107
return
reg
;
108
}
109
110
// dummy
111
int
112
flattenCCIndex
(
int
reg
)
const
113
{
114
return
reg
;
115
}
116
117
int
118
flattenMiscIndex
(
int
reg
)
const
119
{
120
return
reg
;
121
}
122
123
const
Params
*
params
()
const
;
124
125
ISA
(
Params
*
p
);
126
127
void
startup
(
ThreadContext
*tc) {}
128
130
using
SimObject::startup
;
131
};
132
}
133
134
#endif
AlphaISA::ISA::serialize
void serialize(CheckpointOut &cp) const override
Serialize an object.
Definition:
isa.cc:57
X86ISA::reg
Bitfield< 5, 3 > reg
Definition:
types.hh:89
AlphaISA::ISA::params
const Params * params() const
Definition:
isa.cc:51
AlphaISA::ISA::readIpr
InternalProcReg readIpr(int idx, ThreadContext *tc)
Definition:
ev5.cc:93
AlphaISA::ISA::readMiscReg
MiscReg readMiscReg(int misc_reg, ThreadContext *tc, ThreadID tid=0)
Definition:
isa.cc:98
registers.hh
AlphaISA::ISA::ipr
InternalProcReg ipr[NumInternalProcRegs]
Definition:
isa.hh:68
AlphaISA::ISA::setMiscRegNoEffect
void setMiscRegNoEffect(int misc_reg, const MiscReg &val, ThreadID tid=0)
Definition:
isa.cc:117
AlphaISA::MiscReg
uint64_t MiscReg
Definition:
registers.hh:54
System
Definition:
system.hh:83
AlphaISA::ISA::intr_flag
int intr_flag
Definition:
isa.hh:66
AlphaISA::ISA::setMiscReg
void setMiscReg(int misc_reg, const MiscReg &val, ThreadContext *tc, ThreadID tid=0)
Definition:
isa.cc:143
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Definition:
thread_context.hh:93
types.hh
X86ISA::val
Bitfield< 63 > val
Definition:
misc.hh:770
AlphaISA::ISA::fpcr
uint64_t fpcr
Definition:
isa.hh:62
AlphaISA::ISA::setIpr
void setIpr(int idx, InternalProcReg val, ThreadContext *tc)
Definition:
ev5.cc:202
AlphaISA::ISA::lock_addr
Addr lock_addr
Definition:
isa.hh:65
AlphaISA::ISA::InternalProcReg
uint64_t InternalProcReg
Definition:
isa.hh:55
AlphaISA::ISA::flattenIntIndex
int flattenIntIndex(int reg) const
Definition:
isa.hh:99
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
CheckpointIn
Definition:
serialize.hh:340
AlphaISA::ISA::uniq
uint64_t uniq
Definition:
isa.hh:63
AlphaISA::ISA::clear
void clear()
Definition:
isa.hh:85
AlphaISA::ISA::flattenFloatIndex
int flattenFloatIndex(int reg) const
Definition:
isa.hh:105
ThreadID
int16_t ThreadID
Thread index/ID type.
Definition:
types.hh:171
CheckpointOut
std::ostream CheckpointOut
Definition:
serialize.hh:67
AlphaISA::ISA::startup
void startup(ThreadContext *tc)
Definition:
isa.hh:127
system.hh
sim_object.hh
BaseCPU
Definition:
cpu_dummy.hh:45
AlphaISA::ISA::ISA
ISA(Params *p)
Definition:
isa.cc:43
AlphaISA::ISA::readMiscRegNoEffect
MiscReg readMiscRegNoEffect(int misc_reg, ThreadID tid=0) const
Definition:
isa.cc:78
AlphaISA::ISA::lock_flag
bool lock_flag
Definition:
isa.hh:64
AlphaISA::ISA
Definition:
isa.hh:52
AlphaISA::ISA::flattenCCIndex
int flattenCCIndex(int reg) const
Definition:
isa.hh:112
AlphaISA::ISA::unserialize
void unserialize(CheckpointIn &cp) override
Unserialize an object.
Definition:
isa.cc:67
AlphaISA::ISA::flattenMiscIndex
int flattenMiscIndex(int reg) const
Definition:
isa.hh:118
AlphaISA::ISA::system
System * system
Definition:
isa.hh:60
MipsISA::p
Bitfield< 0 > p
Definition:
pra_constants.hh:325
EventManager
Definition:
eventq.hh:710
AlphaISA::NumInternalProcRegs
Definition:
ipr.hh:217
SimObject
Abstract superclass for simulation objects.
Definition:
sim_object.hh:94
AlphaISA::ISA::Params
AlphaISAParams Params
Definition:
isa.hh:56
SimObject::startup
virtual void startup()
startup() is the final initialization call before simulation.
Definition:
sim_object.cc:97
Generated on Fri Jun 9 2017 13:03:35 for gem5 by
doxygen
1.8.6