48 #include "arch/vtophys.hh" 52 #include "debug/Thread.hh" 62 using namespace Linux;
85 panic(
"Could not determine start location of kernel");
93 params()->boot_osflags.c_str(),
94 params()->boot_osflags.length() + 1);
103 params()->boot_cpu_frequency));
115 panic(
"could not find dp264_mv\n");
137 addKernelFuncEvent<SkipFuncEvent>(
"ide_delay_50ms");
139 addKernelFuncEvent<SkipDelayLoopEvent>(
"calibrate_delay");
141 addKernelFuncEvent<SkipFuncEvent>(
"determine_cpu_caches");
198 DPRINTF(Thread,
"Currently Executing Thread %s, pid %d, started at: %d\n",
203 LinuxAlphaSystemParams::create()
#define panic(...)
This implements a cprintf based panic() function.
virtual void setupFuncEvents()
Setup all the function events.
virtual System * getSystemPtr()=0
BreakPCEvent * kernelPanicEvent
Event to halt the simulator if the kernel calls panic()
LinuxAlphaSystemParams Params
int64_t curTaskStart(Addr thread_info=0)
virtual void process(ThreadContext *tc)
virtual void setupFuncEvents()
Setup all the function events.
virtual PortProxy & getVirtProxy()=0
Overload hash function for BasicBlockRange type.
virtual BaseCPU * getCpuPtr()=0
Tick Frequency
The simulated frequency of curTick(). (In ticks per second)
ThreadContext is the external interface to all thread state for anything outside of the CPU...
SkipDelayLoopEvent * skipDelayLoopEvent
Skip calculate_delay_loop() rather than waiting for this to be calculated.
const ByteOrder GuestByteOrder
bool findAddress(const std::string &symbol, Addr &address) const
uint64_t frequency() const
void writeBlob(Addr addr, const void *p, int size) const
Same as tryWriteBlob, but insists on success.
uint64_t Tick
Tick count type.
PrintThreadInfo * printThreadEvent
Event to print information about thread switches if the trace flag Thread is set. ...
SkipFuncEvent * skipIdeDelay50msEvent
PC based event to skip the ide_delay_50ms() call.
IdleStartEvent * idleStartEvent
Grab the PCBB of the idle process when it starts.
void initState() override
Initialise the state of the system.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
SymbolTable * kernelSymtab
kernel symbol table
This object is a proxy for a port or other object which implements the functional response protocol...
virtual void initState()
Initialise the system.
FSTranslatingPortProxy virtProxy
Proxy used to copy arguments directly into kernel memory.
const Params * params() const
int32_t curTaskPID(Addr thread_info=0)
virtual void process(ThreadContext *tc)
void setDelayLoop(ThreadContext *tc)
LinuxAlphaSystem(Params *p)
This class contains linux specific system code (Loading, Events).
std::string curTaskName(Addr thread_info=0)
void write(Addr address, const T &data) const
Write object T to address.
Addr KernelStart
Addresses defining where the kernel bootloader places various elements.
SkipFuncEvent * skipCacheProbeEvent
Event to skip determine_cpu_caches() because we don't support the IPRs that the code can access to fi...
Linux::DebugPrintkEvent * debugPrintkEvent
PC based event to skip the dprink() call and emulate its functionality.
virtual void process(ThreadContext *tc)