diff options
Diffstat (limited to 'src/cpu/o3')
-rw-r--r-- | src/cpu/o3/dyn_inst.hh | 6 | ||||
-rw-r--r-- | src/cpu/o3/dyn_inst_impl.hh | 8 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/cpu/o3/dyn_inst.hh b/src/cpu/o3/dyn_inst.hh index 399240d69..e58eb99c5 100644 --- a/src/cpu/o3/dyn_inst.hh +++ b/src/cpu/o3/dyn_inst.hh @@ -205,11 +205,11 @@ class BaseO3DynInst : public BaseDynInst<Impl> /** Traps to handle specified fault. */ void trap(Fault fault); bool simPalCheck(int palFunc); -#else - /** Calls a syscall. */ - void syscall(int64_t callnum); #endif + /** Emulates a syscall. */ + void syscall(int64_t callnum); + public: // The register accessor methods provide the index of the diff --git a/src/cpu/o3/dyn_inst_impl.hh b/src/cpu/o3/dyn_inst_impl.hh index eceb0b49f..500d63de8 100644 --- a/src/cpu/o3/dyn_inst_impl.hh +++ b/src/cpu/o3/dyn_inst_impl.hh @@ -188,11 +188,15 @@ BaseO3DynInst<Impl>::simPalCheck(int palFunc) #endif return this->cpu->simPalCheck(palFunc, this->threadNumber); } -#else +#endif + template <class Impl> void BaseO3DynInst<Impl>::syscall(int64_t callnum) { +#if FULL_SYSTEM + panic("Syscall emulation isn't available in FS mode.\n"); +#else // HACK: check CPU's nextPC before and after syscall. If it // changes, update this instruction's nextPC because the syscall // must have changed the nextPC. @@ -202,6 +206,6 @@ BaseO3DynInst<Impl>::syscall(int64_t callnum) if (!(curPC == newPC)) { this->pcState(newPC); } -} #endif +} |