diff options
author | Kevin Lim <ktlim@umich.edu> | 2006-06-08 16:58:50 -0400 |
---|---|---|
committer | Kevin Lim <ktlim@umich.edu> | 2006-06-08 16:58:50 -0400 |
commit | cf79dba504e2ed47ea82dae6cfc71662d1bc25a0 (patch) | |
tree | 2e273cc1ae8045bcaa920cb75d73dc552820a0f9 /src/cpu/ozone | |
parent | bf6e176554253bed701338a8f481634e1cea8b48 (diff) | |
download | gem5-cf79dba504e2ed47ea82dae6cfc71662d1bc25a0.tar.xz |
Get O3 CPU mostly working in full system, and fix an FP bug that showed up.
It still does not yet handle retries.
src/cpu/base_dyn_inst.hh:
Get working in full-system mode and fix some FP bugs.
src/cpu/checker/cpu.cc:
src/cpu/checker/cpu.hh:
src/cpu/checker/thread_context.hh:
src/cpu/o3/alpha_cpu.hh:
src/cpu/o3/alpha_cpu_impl.hh:
src/cpu/o3/commit_impl.hh:
src/cpu/o3/cpu.cc:
src/cpu/o3/cpu.hh:
src/cpu/o3/fetch_impl.hh:
src/cpu/o3/thread_state.hh:
src/cpu/ozone/cpu.hh:
src/cpu/ozone/thread_state.hh:
src/cpu/thread_state.hh:
Get working in full system.
src/cpu/checker/o3_cpu_builder.cc:
Checker does not take a MemObject as a simobj parameter.
src/cpu/o3/alpha_dyn_inst.hh:
Fix up float regs.
src/cpu/o3/regfile.hh:
Fix up an fp error, print out more useful output messages.
--HG--
extra : convert_revision : d7cc152a051c697f18b7ee9e14050fbf3ffa5966
Diffstat (limited to 'src/cpu/ozone')
-rw-r--r-- | src/cpu/ozone/cpu.hh | 38 | ||||
-rw-r--r-- | src/cpu/ozone/thread_state.hh | 8 |
2 files changed, 20 insertions, 26 deletions
diff --git a/src/cpu/ozone/cpu.hh b/src/cpu/ozone/cpu.hh index 55e3813ae..e9550c39b 100644 --- a/src/cpu/ozone/cpu.hh +++ b/src/cpu/ozone/cpu.hh @@ -113,8 +113,6 @@ class OzoneCPU : public BaseCPU int readCpuId() { return thread->cpuId; } - TranslatingPort *getMemPort() { return /*thread->port*/NULL; } - #if FULL_SYSTEM System *getSystemPtr() { return cpu->system; } @@ -125,7 +123,17 @@ class OzoneCPU : public BaseCPU AlphaDTB * getDTBPtr() { return cpu->dtb; } Kernel::Statistics *getKernelStats() { return thread->kernelStats; } + + FunctionalPort *getPhysPort() { return thread->getPhysPort(); } + + VirtualPort *getVirtPort(ThreadContext *tc = NULL) + { return thread->getVirtPort(tc); } + + void delVirtPort(VirtualPort *vp) + { thread->delVirtPort(vp); } #else + TranslatingPort *getMemPort() { return thread->port; } + Process *getProcessPtr() { return thread->process; } #endif @@ -363,23 +371,9 @@ class OzoneCPU : public BaseCPU AlphaITB *itb; AlphaDTB *dtb; System *system; - - // the following two fields are redundant, since we can always - // look them up through the system pointer, but we'll leave them - // here for now for convenience - MemoryController *memctrl; PhysicalMemory *physmem; #endif - // L1 instruction cache -// MemInterface *icacheInterface; - - // L1 data cache -// MemInterface *dcacheInterface; - - /** Pointer to memory. */ - FunctionalMemory *mem; - FrontEnd *frontEnd; BackEnd *backEnd; @@ -424,19 +418,19 @@ class OzoneCPU : public BaseCPU bool validInstAddr(Addr addr) { return true; } bool validDataAddr(Addr addr) { return true; } - Fault translateInstReq(MemReqPtr &req) + Fault translateInstReq(Request *req) { - return itb->translate(req); + return itb->translate(req, tc); } - Fault translateDataReadReq(MemReqPtr &req) + Fault translateDataReadReq(Request *req) { - return dtb->translate(req, false); + return dtb->translate(req, tc, false); } - Fault translateDataWriteReq(MemReqPtr &req) + Fault translateDataWriteReq(Request *req) { - return dtb->translate(req, true); + return dtb->translate(req, tc, true); } #else diff --git a/src/cpu/ozone/thread_state.hh b/src/cpu/ozone/thread_state.hh index d5fe7ef48..299878c29 100644 --- a/src/cpu/ozone/thread_state.hh +++ b/src/cpu/ozone/thread_state.hh @@ -62,8 +62,8 @@ struct OzoneThreadState : public ThreadState { typedef TheISA::MiscReg MiscReg; #if FULL_SYSTEM - OzoneThreadState(FullCPU *_cpu, int _thread_num, FunctionalMemory *_mem) - : ThreadState(-1, _thread_num, _mem), + OzoneThreadState(FullCPU *_cpu, int _thread_num) + : ThreadState(-1, _thread_num), inSyscall(0), trapPending(0) { memset(®s, 0, sizeof(TheISA::RegFile)); @@ -76,9 +76,9 @@ struct OzoneThreadState : public ThreadState { memset(®s, 0, sizeof(TheISA::RegFile)); } - OzoneThreadState(FullCPU *_cpu, int _thread_num, FunctionalMemory *_mem, + OzoneThreadState(FullCPU *_cpu, int _thread_num, int _asid) - : ThreadState(-1, _thread_num, _mem, NULL, _asid), + : ThreadState(-1, _thread_num, NULL, NULL, _asid), cpu(_cpu), inSyscall(0), trapPending(0) { memset(®s, 0, sizeof(TheISA::RegFile)); |