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
arm
process.hh
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
* 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
* Authors: Stephen Hines
41
*/
42
43
#ifndef __ARM_PROCESS_HH__
44
#define __ARM_PROCESS_HH__
45
46
#include <string>
47
#include <vector>
48
49
#include "
arch/arm/intregs.hh
"
50
#include "
base/loader/object_file.hh
"
51
#include "
mem/page_table.hh
"
52
#include "
sim/process.hh
"
53
54
class
ObjectFile
;
55
56
class
ArmProcess
:
public
Process
57
{
58
protected
:
59
ObjectFile::Arch
arch
;
60
ArmProcess
(ProcessParams *
params
,
ObjectFile
*
objFile
,
61
ObjectFile::Arch
_arch);
62
template
<
class
IntType>
63
void
argsInit
(
int
pageSize,
ArmISA::IntRegIndex
spIndex);
64
};
65
66
class
ArmProcess32
:
public
ArmProcess
67
{
68
protected
:
69
ArmProcess32
(ProcessParams *
params
,
ObjectFile
*
objFile
,
70
ObjectFile::Arch
_arch);
71
72
void
initState
();
73
74
public
:
75
76
ArmISA::IntReg
getSyscallArg
(
ThreadContext
*tc,
int
&
i
,
int
width
);
77
ArmISA::IntReg
getSyscallArg
(
ThreadContext
*tc,
int
&i);
78
void
setSyscallArg
(
ThreadContext
*tc,
int
i,
ArmISA::IntReg
val
);
79
void
setSyscallReturn
(
ThreadContext
*tc,
SyscallReturn
return_value);
80
};
81
82
class
ArmProcess64
:
public
ArmProcess
83
{
84
protected
:
85
ArmProcess64
(ProcessParams *
params
,
ObjectFile
*
objFile
,
86
ObjectFile::Arch
_arch);
87
88
void
initState
();
89
90
public
:
91
92
ArmISA::IntReg
getSyscallArg
(
ThreadContext
*tc,
int
&
i
,
int
width
);
93
ArmISA::IntReg
getSyscallArg
(
ThreadContext
*tc,
int
&i);
94
void
setSyscallArg
(
ThreadContext
*tc,
int
i,
ArmISA::IntReg
val
);
95
void
setSyscallReturn
(
ThreadContext
*tc,
SyscallReturn
return_value);
96
};
97
98
/* No architectural page table defined for this ISA */
99
typedef
NoArchPageTable
ArchPageTable
;
100
101
#endif // __ARM_PROCESS_HH__
102
ArmProcess64
Definition:
process.hh:82
Process::objFile
ObjectFile * objFile
Definition:
process.hh:182
ArmISA::IntRegIndex
IntRegIndex
Definition:
intregs.hh:53
ArmISA::i
Bitfield< 7 > i
Definition:
miscregs.hh:1378
ArmProcess64::getSyscallArg
ArmISA::IntReg getSyscallArg(ThreadContext *tc, int &i, int width)
Definition:
process.cc:439
intregs.hh
SimObject::params
const Params * params() const
Definition:
sim_object.hh:111
object_file.hh
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Definition:
thread_context.hh:93
X86ISA::val
Bitfield< 63 > val
Definition:
misc.hh:770
ArmProcess64::setSyscallReturn
void setSyscallReturn(ThreadContext *tc, SyscallReturn return_value)
Definition:
process.cc:477
ArmISA::IntReg
uint64_t IntReg
Definition:
registers.hh:63
process.hh
ArmProcess32::setSyscallArg
void setSyscallArg(ThreadContext *tc, int i, ArmISA::IntReg val)
Definition:
process.cc:446
ArmProcess::ArmProcess
ArmProcess(ProcessParams *params, ObjectFile *objFile, ObjectFile::Arch _arch)
Definition:
process.cc:63
ArmProcess::arch
ObjectFile::Arch arch
Definition:
process.hh:59
NoArchPageTable
Faux page table class indended to stop the usage of an architectural page table, when there is none d...
Definition:
page_table.hh:254
ArmProcess32::setSyscallReturn
void setSyscallReturn(ThreadContext *tc, SyscallReturn return_value)
Definition:
process.cc:460
ArmProcess32::initState
void initState()
initState() is called on each SimObject when not restoring from a checkpoint.
Definition:
process.cc:100
ObjectFile::Arch
Arch
Definition:
object_file.hh:48
ArmProcess32
Definition:
process.hh:66
ArmProcess64::setSyscallArg
void setSyscallArg(ThreadContext *tc, int i, ArmISA::IntReg val)
Definition:
process.cc:453
page_table.hh
Declarations of a non-full system Page Table.
ArmProcess
Definition:
process.hh:56
ArmProcess64::ArmProcess64
ArmProcess64(ProcessParams *params, ObjectFile *objFile, ObjectFile::Arch _arch)
Definition:
process.cc:84
ArmProcess32::getSyscallArg
ArmISA::IntReg getSyscallArg(ThreadContext *tc, int &i, int width)
Definition:
process.cc:420
ArmProcess::argsInit
void argsInit(int pageSize, ArmISA::IntRegIndex spIndex)
Definition:
process.cc:142
ArmISA::width
Bitfield< 4 > width
Definition:
miscregs.hh:1383
ArmProcess32::ArmProcess32
ArmProcess32(ProcessParams *params, ObjectFile *objFile, ObjectFile::Arch _arch)
Definition:
process.cc:69
Process
Definition:
process.hh:63
ArchPageTable
NoArchPageTable ArchPageTable
Definition:
process.hh:65
SyscallReturn
This class represents the return value from an emulated system call, including any errno setting...
Definition:
syscall_return.hh:54
ObjectFile
Definition:
object_file.hh:44
ArmProcess64::initState
void initState()
initState() is called on each SimObject when not restoring from a checkpoint.
Definition:
process.cc:119
Generated on Fri Jun 9 2017 13:03:35 for gem5 by
doxygen
1.8.6