gem5
v19.0.0.0
arch
alpha
linux
system.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2004-2006 The Regents of The University of Michigan
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are
7
* met: redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer;
9
* redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution;
12
* neither the name of the copyright holders nor the names of its
13
* contributors may be used to endorse or promote products derived from
14
* this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
*
28
* Authors: Ali Saidi
29
* Lisa Hsu
30
* Nathan Binkert
31
*/
32
33
#ifndef __ARCH_ALPHA_LINUX_SYSTEM_HH__
34
#define __ARCH_ALPHA_LINUX_SYSTEM_HH__
35
36
class
ThreadContext
;
37
38
class
BreakPCEvent
;
39
class
IdleStartEvent
;
40
41
#include "
arch/alpha/idle_event.hh
"
42
#include "
arch/alpha/system.hh
"
43
#include "
kern/linux/events.hh
"
44
#include "params/LinuxAlphaSystem.hh"
45
51
class
LinuxAlphaSystem
:
public
AlphaSystem
52
{
53
private
:
54
struct
SkipDelayLoopEvent
:
public
SkipFuncEvent
55
{
56
SkipDelayLoopEvent
(
PCEventScope
*
s
,
const
std::string &desc,
Addr
addr
)
57
:
SkipFuncEvent
(s, desc, addr) {}
58
virtual
void
process
(
ThreadContext
*tc);
59
};
60
61
struct
PrintThreadInfo
:
public
PCEvent
62
{
63
PrintThreadInfo
(
PCEventScope
*
s
,
const
std::string &desc,
Addr
addr
)
64
:
PCEvent
(s, desc, addr) {}
65
virtual
void
process
(
ThreadContext
*tc);
66
};
67
72
Addr
KernelStart
;
// Lookup the symbol swapper_pg_dir
73
74
public
:
75
Addr
InitStack
()
const
{
return
KernelStart + 0x02000; }
76
Addr
EmptyPGT
()
const
{
return
KernelStart + 0x04000; }
77
Addr
EmptyPGE
()
const
{
return
KernelStart + 0x08000; }
78
Addr
ZeroPGE
()
const
{
return
KernelStart + 0x0A000; }
79
Addr
StartAddr
()
const
{
return
KernelStart + 0x10000; }
80
81
Addr
Param
()
const
{
return
ZeroPGE
() + 0x0; }
82
Addr
CommandLine
()
const
{
return
Param
() + 0x0; }
83
Addr
InitrdStart
()
const
{
return
Param
() + 0x100; }
84
Addr
InitrdSize
()
const
{
return
Param
() + 0x108; }
85
static
const
int
CommandLineSize
= 256;
86
87
private
:
88
#ifndef NDEBUG
89
90
BreakPCEvent
*
kernelPanicEvent
;
91
92
#endif
93
98
SkipFuncEvent
*
skipCacheProbeEvent
;
99
101
SkipFuncEvent
*
skipIdeDelay50msEvent
;
102
107
Linux::DebugPrintkEvent
*
debugPrintkEvent
;
108
113
SkipDelayLoopEvent
*
skipDelayLoopEvent
;
114
119
PrintThreadInfo
*
printThreadEvent
;
120
122
IdleStartEvent
*
idleStartEvent
;
123
124
protected
:
128
virtual
void
setupFuncEvents
();
129
130
public
:
131
typedef
LinuxAlphaSystemParams
Params
;
132
LinuxAlphaSystem
(Params *
p
);
133
~LinuxAlphaSystem
();
134
138
virtual
void
initState
();
139
140
void
setDelayLoop
(
ThreadContext
*tc);
141
142
const
Params *
params
()
const
{
return
(
const
Params *)
_params
; }
143
};
144
145
#endif // __ARCH_ALPHA_LINUX_SYSTEM_HH__
AlphaSystem
Definition:
system.hh:46
LinuxAlphaSystem::ZeroPGE
Addr ZeroPGE() const
Definition:
system.hh:78
LinuxAlphaSystem::kernelPanicEvent
BreakPCEvent * kernelPanicEvent
Event to halt the simulator if the kernel calls panic()
Definition:
system.hh:90
LinuxAlphaSystem::PrintThreadInfo
Definition:
system.hh:61
LinuxAlphaSystem::Params
LinuxAlphaSystemParams Params
Definition:
system.hh:131
system.hh
LinuxAlphaSystem::PrintThreadInfo::PrintThreadInfo
PrintThreadInfo(PCEventScope *s, const std::string &desc, Addr addr)
Definition:
system.hh:63
addr
ip6_addr_t addr
Definition:
inet.hh:335
LinuxAlphaSystem::SkipDelayLoopEvent::process
virtual void process(ThreadContext *tc)
Definition:
system.cc:186
LinuxAlphaSystem::setupFuncEvents
virtual void setupFuncEvents()
Setup all the function events.
Definition:
system.cc:120
LinuxAlphaSystem::Param
Addr Param() const
Definition:
system.hh:81
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Definition:
thread_context.hh:93
LinuxAlphaSystem::SkipDelayLoopEvent
Definition:
system.hh:54
LinuxAlphaSystem::skipDelayLoopEvent
SkipDelayLoopEvent * skipDelayLoopEvent
Skip calculate_delay_loop() rather than waiting for this to be calculated.
Definition:
system.hh:113
LinuxAlphaSystem::EmptyPGE
Addr EmptyPGE() const
Definition:
system.hh:77
LinuxAlphaSystem::~LinuxAlphaSystem
~LinuxAlphaSystem()
Definition:
system.cc:159
ArmISA::s
Bitfield< 4 > s
Definition:
miscregs_types.hh:558
idle_event.hh
events.hh
LinuxAlphaSystem::printThreadEvent
PrintThreadInfo * printThreadEvent
Event to print information about thread switches if the trace flag Thread is set. ...
Definition:
system.hh:119
LinuxAlphaSystem::skipIdeDelay50msEvent
SkipFuncEvent * skipIdeDelay50msEvent
PC based event to skip the ide_delay_50ms() call.
Definition:
system.hh:101
IdleStartEvent
Definition:
idle_event.hh:38
LinuxAlphaSystem::idleStartEvent
IdleStartEvent * idleStartEvent
Grab the PCBB of the idle process when it starts.
Definition:
system.hh:122
LinuxAlphaSystem::StartAddr
Addr StartAddr() const
Definition:
system.hh:79
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition:
types.hh:142
LinuxAlphaSystem::EmptyPGT
Addr EmptyPGT() const
Definition:
system.hh:76
LinuxAlphaSystem::InitrdSize
Addr InitrdSize() const
Definition:
system.hh:84
Linux::DebugPrintkEvent
Definition:
events.hh:51
LinuxAlphaSystem::InitrdStart
Addr InitrdStart() const
Definition:
system.hh:83
SkipFuncEvent
Definition:
system_events.hh:38
LinuxAlphaSystem::initState
virtual void initState()
Initialise the system.
Definition:
system.cc:70
LinuxAlphaSystem::CommandLineSize
static const int CommandLineSize
Definition:
system.hh:85
System::_params
Params * _params
Definition:
system.hh:571
LinuxAlphaSystem::params
const Params * params() const
Definition:
system.hh:142
PCEvent
Definition:
pc_event.hh:45
PCEventScope
Definition:
pc_event.hh:67
LinuxAlphaSystem::SkipDelayLoopEvent::SkipDelayLoopEvent
SkipDelayLoopEvent(PCEventScope *s, const std::string &desc, Addr addr)
Definition:
system.hh:56
BreakPCEvent
Definition:
pc_event.hh:147
LinuxAlphaSystem::setDelayLoop
void setDelayLoop(ThreadContext *tc)
Definition:
system.cc:173
LinuxAlphaSystem::LinuxAlphaSystem
LinuxAlphaSystem(Params *p)
Definition:
system.cc:64
LinuxAlphaSystem
This class contains linux specific system code (Loading, Events).
Definition:
system.hh:51
LinuxAlphaSystem::KernelStart
Addr KernelStart
Addresses defining where the kernel bootloader places various elements.
Definition:
system.hh:72
LinuxAlphaSystem::CommandLine
Addr CommandLine() const
Definition:
system.hh:82
MipsISA::p
Bitfield< 0 > p
Definition:
pra_constants.hh:325
LinuxAlphaSystem::InitStack
Addr InitStack() const
Definition:
system.hh:75
LinuxAlphaSystem::skipCacheProbeEvent
SkipFuncEvent * skipCacheProbeEvent
Event to skip determine_cpu_caches() because we don't support the IPRs that the code can access to fi...
Definition:
system.hh:98
LinuxAlphaSystem::debugPrintkEvent
Linux::DebugPrintkEvent * debugPrintkEvent
PC based event to skip the dprink() call and emulate its functionality.
Definition:
system.hh:107
Generated on Fri Feb 28 2020 16:26:56 for gem5 by
doxygen
1.8.13