diff options
author | Steve Reinhardt <stever@eecs.umich.edu> | 2003-10-24 23:02:36 -0700 |
---|---|---|
committer | Steve Reinhardt <stever@eecs.umich.edu> | 2003-10-24 23:02:36 -0700 |
commit | 91cb532f9f44874e768ba749df03ca1f4dc07bc9 (patch) | |
tree | 71e2b0173f5ed7c2e84968e525973f514fb9b1b8 /kern/tru64 | |
parent | cd6b6df581f554805a5a1388ccd78044d91a2663 (diff) | |
download | gem5-91cb532f9f44874e768ba749df03ca1f4dc07bc9.tar.xz |
Make FullCPU schedule its TickEvent when one of its contexts becomes active.
This fixes detailed-mpboot, which was broken as of my last change.
Also clean up some of the ExecContext status initialization.
cpu/base_cpu.hh:
CPU::execCtxStatusChg() now takes thread_num as an arg so the CPU knows
which execContext had the status change.
BaseCPU::registerExecContexts() no longer needs to be virtual.
cpu/exec_context.cc:
Initialize _status directly... don't use setStatus() as this will notify the CPU
of the change before it is ready.
CPU::execCtxStatusChg() now takes thread_num as an arg so the CPU knows
which execContext had the status change.
cpu/exec_context.hh:
Don't need initStatus() any more.
cpu/simple_cpu/simple_cpu.cc:
Move execCtxStatusChg() from header to .cc file.
No longer need specialized version of registerExecContexts to schedule TickEvent.
cpu/simple_cpu/simple_cpu.hh:
Move execCtxStatusChg() from header to .cc file.
CPU::execCtxStatusChg() now takes thread_num as arg (must be 0 for SimpleCPU).
No longer need specialized version of registerExecContexts to schedule TickEvent.
kern/tru64/tru64_system.cc:
Don't need initRegs; the PC etc. get initialized in the CPU constructor.
ExecContexts start out as Unallocated, so no need to set them to Unallocated here.
kern/tru64/tru64_system.hh:
Don't need initRegs; the PC etc. get initialized in the CPU constructor.
sim/prog.cc:
ExecContexts start out as Unallocated, so no need to set them to Unallocated here.
--HG--
extra : convert_revision : e960ebbeb845960344633798e251b6c8bf1c0378
Diffstat (limited to 'kern/tru64')
-rw-r--r-- | kern/tru64/tru64_system.cc | 16 | ||||
-rw-r--r-- | kern/tru64/tru64_system.hh | 1 |
2 files changed, 1 insertions, 16 deletions
diff --git a/kern/tru64/tru64_system.cc b/kern/tru64/tru64_system.cc index 8b4ff668d..a7940ed1f 100644 --- a/kern/tru64/tru64_system.cc +++ b/kern/tru64/tru64_system.cc @@ -72,10 +72,6 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, fatal("Could not load PALcode file %s", palcode); pal->loadSections(physmem, true); - // copy of initial reg file contents - initRegs = new RegFile; - memset(initRegs, 0, sizeof(RegFile)); - // Load console file console->loadSections(physmem, true); @@ -90,10 +86,6 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, "Kernel entry = %#x\n", kernelStart, kernelEnd, kernelEntry); - // Setup kernel boot parameters - initRegs->pc = 0x4001; - initRegs->npc = initRegs->pc + sizeof(MachInst); - DPRINTF(Loader, "Kernel loaded...\n"); kernelPanicEvent = new BreakPCEvent(&pcEventQueue, "kernel panic"); @@ -164,8 +156,6 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, Tru64System::~Tru64System() { - delete initRegs; - delete kernel; delete console; @@ -190,11 +180,7 @@ Tru64System::registerExecContext(ExecContext *xc) int xcIndex = System::registerExecContext(xc); if (xcIndex == 0) { - // xc->regs = *initRegs; - xc->initStatus(ExecContext::Active); - } - else { - xc->initStatus(ExecContext::Unallocated); + xc->setStatus(ExecContext::Active); } RemoteGDB *rgdb = new RemoteGDB(this, xc); diff --git a/kern/tru64/tru64_system.hh b/kern/tru64/tru64_system.hh index a67792aaf..e0d2bedf7 100644 --- a/kern/tru64/tru64_system.hh +++ b/kern/tru64/tru64_system.hh @@ -67,7 +67,6 @@ class Tru64System : public System DumpMbufEvent *dumpMbufEvent; private: - RegFile *initRegs; Addr kernelStart; Addr kernelEnd; |