48 #include "arch/vtophys.hh"
52 #include "debug/Thread.hh"
61 using namespace AlphaISA;
62 using namespace Linux;
85 panic(
"Could not determine start location of kernel");
93 (uint8_t*)
params()->boot_osflags.c_str(),
94 params()->boot_osflags.length()+1);
103 params()->boot_cpu_frequency));
115 panic(
"could not find dp264_mv\n");
127 kernelDieEvent = addKernelFuncEventOrPanic<BreakPCEvent>(
"die_if_kernel");
141 addKernelFuncEvent<SkipFuncEvent>(
"ide_delay_50ms");
143 addKernelFuncEvent<SkipDelayLoopEvent>(
"calibrate_delay");
145 addKernelFuncEvent<SkipFuncEvent>(
"determine_cpu_caches");
184 vp.writeHtoG(addr, (uint32_t)((cpuFreq /
intrFreq) * 0.9988));
201 DPRINTF(Thread,
"Currently Executing Thread %s, pid %d, started at: %d\n",
206 LinuxAlphaSystemParams::create()
A TranslatingPortProxy in FS mode translates a virtual address to a physical address and then calls t...
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)
void write(Addr address, T data) const
Write object T to address.
virtual void process(ThreadContext *tc)
virtual void setupFuncEvents()
Setup all the function events.
virtual BaseCPU * getCpuPtr()=0
bool findAddress(const std::string &symbol, Addr &address) const
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.
virtual void writeBlob(Addr addr, const uint8_t *p, int size) const
Version of writeBlob that translates virt->phys and deals with page boundries.
This class encapsulates the types, structures, constants, functions, and syscall-number mappings spec...
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
virtual void initState()
Initialise the system.
virtual FSTranslatingPortProxy & getVirtProxy()=0
const Params * params() const
FSTranslatingPortProxy virtProxy
Proxy used to copy arguments directly into kernel memory.
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)
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)