diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-10-02 22:21:38 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-10-02 22:21:38 -0700 |
commit | a56c651980921d210f2c48f84ce5d3445fc38475 (patch) | |
tree | 9638492e690d36d6e644eb5f73c37e26fc3adc23 /src/arch/x86 | |
parent | 4049c9f76afd17c983eed923940eb7338229561d (diff) | |
download | gem5-a56c651980921d210f2c48f84ce5d3445fc38475.tar.xz |
Predecoder: Clear out predecoder state on an ITLB fault.
--HG--
extra : convert_revision : 68f8ff778dbd28ade5070edf5a7d662e7bf0045a
Diffstat (limited to 'src/arch/x86')
-rw-r--r-- | src/arch/x86/predecoder.cc | 4 | ||||
-rw-r--r-- | src/arch/x86/predecoder.hh | 7 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/arch/x86/predecoder.cc b/src/arch/x86/predecoder.cc index 7f8bc7abc..62899e65a 100644 --- a/src/arch/x86/predecoder.cc +++ b/src/arch/x86/predecoder.cc @@ -62,7 +62,7 @@ namespace X86ISA { - void Predecoder::reset() + void Predecoder::doReset() { origPC = basePC + offset; DPRINTF(Predecoder, "Setting origPC to %#x\n", origPC); @@ -96,7 +96,7 @@ namespace X86ISA switch(state) { case ResetState: - reset(); + doReset(); state = PrefixState; case PrefixState: state = doPrefixState(nextByte); diff --git a/src/arch/x86/predecoder.hh b/src/arch/x86/predecoder.hh index 450ebd79b..6e41e8134 100644 --- a/src/arch/x86/predecoder.hh +++ b/src/arch/x86/predecoder.hh @@ -134,7 +134,7 @@ namespace X86ISA outOfBytes = true; } - void reset(); + void doReset(); //State machine state protected: @@ -182,6 +182,11 @@ namespace X86ISA emi.mode.submode = SixtyFourBitMode; } + void reset() + { + state = ResetState; + } + ThreadContext * getTC() { return tc; |