gem5
v24.0.0.0
Loading...
Searching...
No Matches
arch
arm
process.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2012, 2018, 2023 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
* Copyright (c) 2007-2008 The Florida State University
15
* All rights reserved.
16
*
17
* Redistribution and use in source and binary forms, with or without
18
* modification, are permitted provided that the following conditions are
19
* met: redistributions of source code must retain the above copyright
20
* notice, this list of conditions and the following disclaimer;
21
* redistributions in binary form must reproduce the above copyright
22
* notice, this list of conditions and the following disclaimer in the
23
* documentation and/or other materials provided with the distribution;
24
* neither the name of the copyright holders nor the names of its
25
* contributors may be used to endorse or promote products derived from
26
* this software without specific prior written permission.
27
*
28
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
*/
40
41
#ifndef __ARM_PROCESS_HH__
42
#define __ARM_PROCESS_HH__
43
44
#include <string>
45
#include <vector>
46
47
#include "
arch/arm/regs/int.hh
"
48
#include "
base/loader/object_file.hh
"
49
#include "
mem/page_table.hh
"
50
#include "
sim/process.hh
"
51
#include "
sim/syscall_abi.hh
"
52
53
namespace
gem5
54
{
55
56
class
ArmProcess
:
public
Process
57
{
58
protected
:
59
loader::Arch
arch
;
60
ArmProcess
(
const
ProcessParams &
params
,
loader::ObjectFile
*
objFile
,
61
loader::Arch
_arch);
62
template
<
class
IntType>
63
void
argsInit
(
int
pageSize,
const
RegId
&spId);
64
65
template
<
class
IntType>
66
IntType
67
armHwcap
()
const
68
{
69
return
static_cast<
IntType
>
(
armHwcapImpl
());
70
}
71
72
template
<
class
IntType>
73
IntType
74
armHwcap2
()
const
75
{
76
return
static_cast<
IntType
>
(
armHwcapImpl2
());
77
}
78
82
virtual
uint32_t
armHwcapImpl
()
const
= 0;
83
virtual
uint64_t
armHwcapImpl2
()
const
= 0;
84
};
85
86
class
ArmProcess32
:
public
ArmProcess
87
{
88
public
:
89
ArmProcess32
(
const
ProcessParams &
params
,
loader::ObjectFile
*
objFile
,
90
loader::Arch
_arch);
91
92
protected
:
93
void
initState
()
override
;
94
96
uint32_t
armHwcapImpl
()
const override
;
97
uint64_t
armHwcapImpl2
()
const override
{
return
0; }
98
};
99
100
class
ArmProcess64
:
public
ArmProcess
101
{
102
public
:
103
ArmProcess64
(
const
ProcessParams &
params
,
loader::ObjectFile
*
objFile
,
104
loader::Arch
_arch);
105
106
protected
:
107
void
initState
()
override
;
108
110
uint32_t
armHwcapImpl
()
const override
;
111
uint64_t
armHwcapImpl2
()
const override
;
112
};
113
114
}
// namespace gem5
115
116
#endif
// __ARM_PROCESS_HH__
int.hh
gem5::ArmProcess32
Definition
process.hh:87
gem5::ArmProcess32::ArmProcess32
ArmProcess32(const ProcessParams ¶ms, loader::ObjectFile *objFile, loader::Arch _arch)
Definition
process.cc:75
gem5::ArmProcess32::initState
void initState() override
initState() is called on each SimObject when not restoring from a checkpoint.
Definition
process.cc:107
gem5::ArmProcess32::armHwcapImpl2
uint64_t armHwcapImpl2() const override
Definition
process.hh:97
gem5::ArmProcess32::armHwcapImpl
uint32_t armHwcapImpl() const override
AArch32 AT_HWCAP.
Definition
process.cc:150
gem5::ArmProcess64
Definition
process.hh:101
gem5::ArmProcess64::armHwcapImpl2
uint64_t armHwcapImpl2() const override
Definition
process.cc:265
gem5::ArmProcess64::ArmProcess64
ArmProcess64(const ProcessParams ¶ms, loader::ObjectFile *objFile, loader::Arch _arch)
Definition
process.cc:90
gem5::ArmProcess64::armHwcapImpl
uint32_t armHwcapImpl() const override
AArch64 AT_HWCAP.
Definition
process.cc:177
gem5::ArmProcess64::initState
void initState() override
initState() is called on each SimObject when not restoring from a checkpoint.
Definition
process.cc:126
gem5::ArmProcess
Definition
process.hh:57
gem5::ArmProcess::armHwcapImpl2
virtual uint64_t armHwcapImpl2() const =0
gem5::ArmProcess::armHwcap2
IntType armHwcap2() const
Definition
process.hh:74
gem5::ArmProcess::armHwcapImpl
virtual uint32_t armHwcapImpl() const =0
AT_HWCAP is 32-bit wide on AArch64 as well so we can safely return an uint32_t.
gem5::ArmProcess::armHwcap
IntType armHwcap() const
Definition
process.hh:67
gem5::ArmProcess::argsInit
void argsInit(int pageSize, const RegId &spId)
Definition
process.cc:336
gem5::ArmProcess::arch
loader::Arch arch
Definition
process.hh:59
gem5::ArmProcess::ArmProcess
ArmProcess(const ProcessParams ¶ms, loader::ObjectFile *objFile, loader::Arch _arch)
Definition
process.cc:65
gem5::Process
Definition
process.hh:68
gem5::Process::objFile
loader::ObjectFile * objFile
Definition
process.hh:223
gem5::RegId
Register ID: describe an architectural register with its class and index.
Definition
reg_class.hh:94
gem5::loader::ObjectFile
Definition
object_file.hh:97
gem5::SimObject::params
const Params & params() const
Definition
sim_object.hh:176
gem5::loader::Arch
Arch
Definition
object_file.hh:62
gem5
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition
binary32.hh:36
object_file.hh
page_table.hh
Declarations of a non-full system Page Table.
process.hh
syscall_abi.hh
Generated on Tue Jun 18 2024 16:24:06 for gem5 by
doxygen
1.11.0