diff options
author | Kevin Lim <ktlim@umich.edu> | 2006-03-13 17:04:24 -0500 |
---|---|---|
committer | Kevin Lim <ktlim@umich.edu> | 2006-03-13 17:04:24 -0500 |
commit | f045b110cf1db6f9fc70589532b48d9cca339897 (patch) | |
tree | f24bb6de3d522153f09ead7f5864c79aecab6a97 /cpu | |
parent | af975813e546b5a951d5e7108454946afd31e434 (diff) | |
download | gem5-f045b110cf1db6f9fc70589532b48d9cca339897.tar.xz |
Have a copyRegs function defined in the ISA that copies registers from one ExecContext to another ExecContext. This makes it easier for anything that needs to copy architected registers to do so in an ISA independent fashion.
arch/alpha/ev5.cc:
copyIprs now copies from a source ExecContext to a destination ExecContext.
arch/alpha/registerfile.hh:
Have ISA specific functions to copy all architected registers from one ExecContext to another.
cpu/cpu_exec_context.cc:
Call the ISA in order to copy any architected registers.
--HG--
extra : convert_revision : 056cc3b3a9f345535d5a57c6524b114bbd5ae3c8
Diffstat (limited to 'cpu')
-rw-r--r-- | cpu/cpu_exec_context.cc | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/cpu/cpu_exec_context.cc b/cpu/cpu_exec_context.cc index 2ad9571ce..0a3dc5675 100644 --- a/cpu/cpu_exec_context.cc +++ b/cpu/cpu_exec_context.cc @@ -28,6 +28,7 @@ #include <string> +#include "arch/isa_traits.hh" #include "cpu/base.hh" #include "cpu/cpu_exec_context.hh" #include "cpu/exec_context.hh" @@ -269,23 +270,6 @@ CPUExecContext::regStats(const string &name) void CPUExecContext::copyArchRegs(ExecContext *xc) { - // First loop through the integer registers. - for (int i = 0; i < TheISA::NumIntRegs; ++i) { - setIntReg(i, xc->readIntReg(i)); - } - - // Then loop through the floating point registers. - for (int i = 0; i < TheISA::NumFloatRegs; ++i) { - setFloatRegDouble(i, xc->readFloatRegDouble(i)); - setFloatRegInt(i, xc->readFloatRegInt(i)); - } - - // Copy misc. registers - regs.miscRegs.copyMiscRegs(xc); - - // Lastly copy PC/NPC - setPC(xc->readPC()); - setNextPC(xc->readNextPC()); - setNextNPC(xc->readNextNPC()); + TheISA::copyRegs(xc, proxy); } |