summaryrefslogtreecommitdiff
path: root/src/cpu/inorder
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2011-09-19 02:46:48 -0700
committerGabe Black <gblack@eecs.umich.edu>2011-09-19 02:46:48 -0700
commit10c2e37f604280fb89d800839cc965204d096c59 (patch)
tree4f71f4ebc8d3c9c20d2f8058410974bf8e2e0608 /src/cpu/inorder
parent83aa47adca17be33d53da6734ea422e1e0e2a07c (diff)
downloadgem5-10c2e37f604280fb89d800839cc965204d096c59.tar.xz
Syscall: Make the syscall function available in both SE and FS modes.
In FS mode the syscall function will panic, but the interface will be consistent and code which calls syscall can be compiled in. This will allow, for instance, instructions that use syscall to be built unconditionally but then not returned by the decoder.
Diffstat (limited to 'src/cpu/inorder')
-rw-r--r--src/cpu/inorder/inorder_dyn_inst.cc8
-rw-r--r--src/cpu/inorder/inorder_dyn_inst.hh4
2 files changed, 8 insertions, 4 deletions
diff --git a/src/cpu/inorder/inorder_dyn_inst.cc b/src/cpu/inorder/inorder_dyn_inst.cc
index f65d2ea9f..ff178f6d3 100644
--- a/src/cpu/inorder/inorder_dyn_inst.cc
+++ b/src/cpu/inorder/inorder_dyn_inst.cc
@@ -311,14 +311,18 @@ InOrderDynInst::simPalCheck(int palFunc)
#endif
return this->cpu->simPalCheck(palFunc, this->threadNumber);
}
-#else
+#endif
+
void
InOrderDynInst::syscall(int64_t callnum)
{
+#if FULL_SYSTEM
+ panic("Syscall emulation isn't available in FS mode.\n");
+#else
syscallNum = callnum;
cpu->syscallContext(NoFault, this->threadNumber, this);
-}
#endif
+}
void
InOrderDynInst::setSquashInfo(unsigned stage_num)
diff --git a/src/cpu/inorder/inorder_dyn_inst.hh b/src/cpu/inorder/inorder_dyn_inst.hh
index 3427af86b..f49476ec5 100644
--- a/src/cpu/inorder/inorder_dyn_inst.hh
+++ b/src/cpu/inorder/inorder_dyn_inst.hh
@@ -525,10 +525,10 @@ class InOrderDynInst : public FastAlloc, public RefCounted
bool simPalCheck(int palFunc);
#else
short syscallNum;
+#endif
- /** Calls a syscall. */
+ /** Emulates a syscall. */
void syscall(int64_t callnum);
-#endif
////////////////////////////////////////////////////////////
//