gem5
v24.0.0.0
Loading...
Searching...
No Matches
arch
power
isa.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2012 ARM Limited
3
* All rights reserved
4
*
5
* The license below extends only to copyright in the software and shall
6
* not be construed as granting a license to any other intellectual
7
* property including but not limited to intellectual property relating
8
* to a hardware implementation of the functionality of the software
9
* licensed hereunder. You may use the software subject to the license
10
* terms below provided that you ensure that this notice is replicated
11
* unmodified and in its entirety in all distributions of the software,
12
* modified or unmodified, in source code or in binary form.
13
*
14
* Redistribution and use in source and binary forms, with or without
15
* modification, are permitted provided that the following conditions are
16
* met: redistributions of source code must retain the above copyright
17
* notice, this list of conditions and the following disclaimer;
18
* redistributions in binary form must reproduce the above copyright
19
* notice, this list of conditions and the following disclaimer in the
20
* documentation and/or other materials provided with the distribution;
21
* neither the name of the copyright holders nor the names of its
22
* contributors may be used to endorse or promote products derived from
23
* this software without specific prior written permission.
24
*
25
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
*/
37
38
#include "
arch/power/isa.hh
"
39
40
#include "
arch/power/regs/float.hh
"
41
#include "
arch/power/regs/int.hh
"
42
#include "
arch/power/regs/misc.hh
"
43
#include "
cpu/thread_context.hh
"
44
#include "debug/MatRegs.hh"
45
#include "params/PowerISA.hh"
46
47
namespace
gem5
48
{
49
50
namespace
PowerISA
51
{
52
53
namespace
54
{
55
56
RegClass
vecRegClass
(
VecRegClass
,
VecRegClassName
, 1, debug::IntRegs);
57
RegClass
vecElemClass
(
VecElemClass
,
VecElemClassName
, 2, debug::IntRegs);
58
RegClass
vecPredRegClass
(
VecPredRegClass
,
VecPredRegClassName
, 1,
59
debug::IntRegs);
60
RegClass
matRegClass
(
MatRegClass
,
MatRegClassName
, 0, debug::MatRegs);
61
RegClass
ccRegClass
(
CCRegClass
,
CCRegClassName
, 0, debug::IntRegs);
62
63
}
// anonymous namespace
64
65
ISA::ISA
(
const
Params
&
p
) :
BaseISA
(
p
,
"power"
)
66
{
67
_regClasses
.push_back(&
intRegClass
);
68
_regClasses
.push_back(&
floatRegClass
);
69
_regClasses
.push_back(&
vecRegClass
);
70
_regClasses
.push_back(&
vecElemClass
);
71
_regClasses
.push_back(&
vecPredRegClass
);
72
_regClasses
.push_back(&
matRegClass
);
73
_regClasses
.push_back(&
ccRegClass
);
74
_regClasses
.push_back(&
miscRegClass
);
75
clear
();
76
}
77
78
void
79
ISA::copyRegsFrom
(
ThreadContext
*src)
80
{
81
// First loop through the integer registers.
82
for
(
auto
&
id
:
intRegClass
)
83
tc
->
setReg
(
id
, src->
getReg
(
id
));
84
85
// Then loop through the floating point registers.
86
for
(
auto
&
id
:
floatRegClass
)
87
tc
->
setReg
(
id
, src->
getReg
(
id
));
88
89
//TODO Copy misc. registers
90
91
// Lastly copy PC/NPC
92
tc
->
pcState
(src->
pcState
());
93
}
94
95
}
// namespace PowerISA
96
}
// namespace gem5
misc.hh
gem5::BaseISA
Definition
isa.hh:59
gem5::BaseISA::tc
ThreadContext * tc
Definition
isa.hh:68
gem5::BaseISA::_regClasses
RegClasses _regClasses
Definition
isa.hh:70
gem5::BaseISA::clear
virtual void clear()
Definition
isa.hh:76
gem5::PowerISA::ISA::copyRegsFrom
void copyRegsFrom(ThreadContext *src) override
Definition
isa.cc:79
gem5::PowerISA::ISA::Params
PowerISAParams Params
Definition
isa.hh:97
gem5::PowerISA::ISA::ISA
ISA(const Params &p)
Definition
isa.cc:65
gem5::ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition
guest_abi.test.cc:41
gem5::ThreadContext::getReg
virtual RegVal getReg(const RegId ®) const
Definition
thread_context.cc:180
gem5::ThreadContext::setReg
virtual void setReg(const RegId ®, RegVal val)
Definition
thread_context.cc:188
gem5::ThreadContext::pcState
virtual const PCStateBase & pcState() const =0
thread_context.hh
gem5::ArmISA::matRegClass
constexpr RegClass matRegClass
Definition
mat.hh:92
gem5::ArmISA::vecElemClass
constexpr RegClass vecElemClass
Definition
vec.hh:105
gem5::ArmISA::intRegClass
constexpr RegClass intRegClass
Definition
int.hh:173
gem5::ArmISA::vecPredRegClass
constexpr RegClass vecPredRegClass
Definition
vec.hh:109
gem5::ArmISA::ccRegClass
constexpr RegClass ccRegClass
Definition
cc.hh:87
gem5::ArmISA::miscRegClass
constexpr RegClass miscRegClass
Definition
misc.hh:2937
gem5::ArmISA::vecRegClass
constexpr RegClass vecRegClass
Definition
vec.hh:101
gem5::MipsISA::p
Bitfield< 0 > p
Definition
pra_constants.hh:326
gem5::X86ISA::floatRegClass
constexpr RegClass floatRegClass
Definition
float.hh:143
gem5
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition
binary32.hh:36
gem5::CCRegClassName
constexpr char CCRegClassName[]
Definition
reg_class.hh:81
gem5::VecPredRegClassName
constexpr char VecPredRegClassName[]
Definition
reg_class.hh:79
gem5::VecRegClassName
constexpr char VecRegClassName[]
Definition
reg_class.hh:77
gem5::MatRegClassName
constexpr char MatRegClassName[]
Definition
reg_class.hh:80
gem5::VecPredRegClass
@ VecPredRegClass
Definition
reg_class.hh:67
gem5::MatRegClass
@ MatRegClass
Matrix Register.
Definition
reg_class.hh:68
gem5::CCRegClass
@ CCRegClass
Condition-code register.
Definition
reg_class.hh:69
gem5::VecRegClass
@ VecRegClass
Vector Register.
Definition
reg_class.hh:64
gem5::VecElemClass
@ VecElemClass
Vector Register Native Elem lane.
Definition
reg_class.hh:66
gem5::VecElemClassName
constexpr char VecElemClassName[]
Definition
reg_class.hh:78
isa.hh
float.hh
int.hh
Generated on Tue Jun 18 2024 16:23:57 for gem5 by
doxygen
1.11.0