gem5
v19.0.0.0
arch
arm
freebsd
process.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com>
3
* All rights reserved.
4
*
5
* This software was developed by the University of Cambridge Computer
6
* Laboratory as part of the CTSRD Project, with support from the UK Higher
7
* Education Innovation Fund (HEIF).
8
*
9
* Redistribution and use in source and binary forms, with or without
10
* modification, are permitted provided that the following conditions are
11
* met: redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer;
13
* redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution;
16
* neither the name of the copyright holders nor the names of its
17
* contributors may be used to endorse or promote products derived from
18
* this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*/
32
33
#ifndef __ARCH_ARM_FREEBSD_PROCESS_HH__
34
#define __ARCH_ARM_FREEBSD_PROCESS_HH__
35
36
#include <vector>
37
38
#include "
arch/arm/process.hh
"
39
40
class
ArmFreebsdProcessBits
41
{
42
protected
:
43
SyscallDesc
*
getFreebsdDesc
(
int
callnum);
44
45
struct
SyscallTable
46
{
47
int
base
;
48
SyscallDesc
*
descs
;
49
int
size
;
50
51
SyscallDesc
*
getDesc
(
int
offset
)
const
;
52
};
53
54
std::vector<SyscallTable>
syscallTables
;
55
};
56
58
class
ArmFreebsdProcess32
:
public
ArmProcess32
,
public
ArmFreebsdProcessBits
59
{
60
public
:
61
ArmFreebsdProcess32
(ProcessParams * params,
ObjectFile
*objFile,
62
ObjectFile::Arch
_arch);
63
64
void
initState()
override
;
65
66
void
syscall(
ThreadContext
*tc,
Fault
*fault)
override
;
67
69
using
ArmProcess::getSyscallArg
;
70
72
static
const
Addr
commPage
;
73
74
SyscallDesc
*
getDesc
(
int
callnum)
override
;
75
};
76
78
class
ArmFreebsdProcess64
:
public
ArmProcess64
,
public
ArmFreebsdProcessBits
79
{
80
public
:
81
ArmFreebsdProcess64
(ProcessParams * params,
ObjectFile
*objFile,
82
ObjectFile::Arch
_arch);
83
84
void
initState()
override
;
85
void
syscall(
ThreadContext
*tc,
Fault
*fault)
override
;
86
SyscallDesc
*
getDesc
(
int
callnum)
override
;
87
};
88
89
#endif // __ARCH_ARM_FREEBSD_PROCESS_HH__
ArmProcess64
Definition:
process.hh:96
ArmFreebsdProcessBits::SyscallTable::descs
SyscallDesc * descs
Definition:
process.hh:48
ArmFreebsdProcessBits::SyscallTable::size
int size
Definition:
process.hh:49
ArmFreebsdProcess32
A process with emulated Arm/Freebsd syscalls.
Definition:
process.hh:58
ArmISA::offset
Bitfield< 23, 0 > offset
Definition:
types.hh:154
ArmFreebsdProcessBits
Definition:
process.hh:40
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Definition:
thread_context.hh:93
std::vector
STL vector class.
Definition:
stl.hh:40
ArmFreebsdProcessBits::SyscallTable::base
int base
Definition:
process.hh:47
ArmFreebsdProcessBits::syscallTables
std::vector< SyscallTable > syscallTables
Definition:
process.hh:54
ArmFreebsdProcess32::commPage
static const Addr commPage
A page to hold "kernel" provided functions. The name might be wrong.
Definition:
process.hh:72
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
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
ArmFreebsdProcess64
A process with emulated Arm/Freebsd syscalls.
Definition:
process.hh:78
ArmFreebsdProcessBits::getFreebsdDesc
SyscallDesc * getFreebsdDesc(int callnum)
Definition:
process.cc:1272
ArmFreebsdProcessBits::SyscallTable
Definition:
process.hh:45
ObjectFile
Definition:
object_file.hh:45
Fault
std::shared_ptr< FaultBase > Fault
Definition:
types.hh:240
ArmFreebsdProcessBits::SyscallTable::getDesc
SyscallDesc * getDesc(int offset) const
Definition:
process.cc:1284
Generated on Fri Feb 28 2020 16:26:56 for gem5 by
doxygen
1.8.13