gem5
v19.0.0.0
arch
arm
linux
process.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2011-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_LINUX_PROCESS_HH__
44
#define __ARM_LINUX_PROCESS_HH__
45
46
#include <vector>
47
48
#include "
arch/arm/process.hh
"
49
50
class
ArmLinuxProcessBits
51
{
52
protected
:
53
SyscallDesc
*
getLinuxDesc
(
int
callnum);
54
55
struct
SyscallTable
56
{
57
int
base
;
58
SyscallDesc
*
descs
;
59
int
size
;
60
61
SyscallDesc
*
getDesc
(
int
offset
)
const
;
62
};
63
64
std::vector<SyscallTable>
syscallTables
;
65
};
66
68
class
ArmLinuxProcess32
:
public
ArmProcess32
,
public
ArmLinuxProcessBits
69
{
70
public
:
71
ArmLinuxProcess32
(ProcessParams * params,
ObjectFile
*objFile,
72
ObjectFile::Arch
_arch);
73
74
void
initState()
override
;
75
76
void
syscall(
ThreadContext
*tc,
Fault
*fault)
override
;
77
79
using
ArmProcess::getSyscallArg
;
80
82
static
const
Addr
commPage
;
83
84
SyscallDesc
*
getDesc
(
int
callnum)
override
;
85
};
86
88
class
ArmLinuxProcess64
:
public
ArmProcess64
,
public
ArmLinuxProcessBits
89
{
90
public
:
91
ArmLinuxProcess64
(ProcessParams * params,
ObjectFile
*objFile,
92
ObjectFile::Arch
_arch);
93
94
void
initState()
override
;
95
void
syscall(
ThreadContext
*tc,
Fault
*fault)
override
;
96
SyscallDesc
*
getDesc
(
int
callnum)
override
;
97
};
98
99
#endif // __ARM_LINUX_PROCESS_HH__
ArmProcess64
Definition:
process.hh:96
ArmLinuxProcessBits::SyscallTable::base
int base
Definition:
process.hh:57
ArmLinuxProcess32
A process with emulated Arm/Linux syscalls.
Definition:
process.hh:68
ArmLinuxProcessBits::SyscallTable
Definition:
process.hh:55
ArmISA::offset
Bitfield< 23, 0 > offset
Definition:
types.hh:154
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Definition:
thread_context.hh:93
ArmLinuxProcessBits::getLinuxDesc
SyscallDesc * getLinuxDesc(int callnum)
Definition:
process.cc:1693
std::vector
STL vector class.
Definition:
stl.hh:40
Process::getSyscallArg
virtual RegVal getSyscallArg(ThreadContext *tc, int &i)=0
ObjectFile::Arch
Arch
Definition:
object_file.hh:49
ArmProcess32
Definition:
process.hh:77
process.hh
ArmLinuxProcessBits::SyscallTable::getDesc
SyscallDesc * getDesc(int offset) const
Definition:
process.cc:1707
ArmLinuxProcess64
A process with emulated Arm/Linux syscalls.
Definition:
process.hh:88
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition:
types.hh:142
SyscallDesc
This class provides the wrapper interface for the system call implementations which are defined in th...
Definition:
syscall_desc.hh:69
ArmLinuxProcessBits
Definition:
process.hh:50
ArmLinuxProcessBits::SyscallTable::descs
SyscallDesc * descs
Definition:
process.hh:58
ArmLinuxProcessBits::syscallTables
std::vector< SyscallTable > syscallTables
Definition:
process.hh:64
ArmLinuxProcess32::commPage
static const Addr commPage
A page to hold "kernel" provided functions. The name might be wrong.
Definition:
process.hh:82
ObjectFile
Definition:
object_file.hh:45
Fault
std::shared_ptr< FaultBase > Fault
Definition:
types.hh:240
ArmLinuxProcessBits::SyscallTable::size
int size
Definition:
process.hh:59
Generated on Fri Feb 28 2020 16:26:56 for gem5 by
doxygen
1.8.13