syscall_emul: [patch 13/22] add system call retry capability
[gem5.git] / src / cpu / thread_context.hh
index cd8b98f0cae37cff633c23e562b82a6795831354..ecbd1a41ebe96daf3325dbcd7b9426626b52ee30 100644 (file)
@@ -98,7 +98,6 @@ class ThreadContext
     typedef TheISA::FloatReg FloatReg;
     typedef TheISA::FloatRegBits FloatRegBits;
     typedef TheISA::CCReg CCReg;
-    typedef TheISA::VectorReg VectorReg;
     typedef TheISA::MiscReg MiscReg;
   public:
 
@@ -175,6 +174,12 @@ class ThreadContext
     /// Set the status to Halted.
     virtual void halt() = 0;
 
+    /// Quiesce thread context
+    void quiesce();
+
+    /// Quiesce, suspend, and schedule activate at resume
+    void quiesceTick(Tick resume);
+
     virtual void dumpFuncProfile() = 0;
 
     virtual void takeOverFrom(ThreadContext *old_context) = 0;
@@ -206,8 +211,6 @@ class ThreadContext
 
     virtual CCReg readCCReg(int reg_idx) = 0;
 
-    virtual const VectorReg &readVectorReg(int reg_idx) = 0;
-
     virtual void setIntReg(int reg_idx, uint64_t val) = 0;
 
     virtual void setFloatReg(int reg_idx, FloatReg val) = 0;
@@ -216,8 +219,6 @@ class ThreadContext
 
     virtual void setCCReg(int reg_idx, CCReg val) = 0;
 
-    virtual void setVectorReg(int reg_idx, const VectorReg &val) = 0;
-
     virtual TheISA::PCState pcState() = 0;
 
     virtual void pcState(const TheISA::PCState &val) = 0;
@@ -241,7 +242,6 @@ class ThreadContext
     virtual int flattenIntIndex(int reg) = 0;
     virtual int flattenFloatIndex(int reg) = 0;
     virtual int flattenCCIndex(int reg) = 0;
-    virtual int flattenVectorIndex(int reg) = 0;
     virtual int flattenMiscIndex(int reg) = 0;
 
     virtual uint64_t
@@ -264,7 +264,7 @@ class ThreadContext
     // Same with st cond failures.
     virtual Counter readFuncExeInst() = 0;
 
-    virtual void syscall(int64_t callnum) = 0;
+    virtual void syscall(int64_t callnum, Fault *fault) = 0;
 
     // This function exits the thread context in the CPU and returns
     // 1 if the CPU has no more active threads (meaning it's OK to exit);
@@ -297,9 +297,6 @@ class ThreadContext
 
     virtual CCReg readCCRegFlat(int idx) = 0;
     virtual void setCCRegFlat(int idx, CCReg val) = 0;
-
-    virtual const VectorReg &readVectorRegFlat(int idx) = 0;
-    virtual void setVectorRegFlat(int idx, const VectorReg &val) = 0;
     /** @} */
 
 };
@@ -376,6 +373,12 @@ class ProxyThreadContext : public ThreadContext
     /// Set the status to Halted.
     void halt() { actualTC->halt(); }
 
+    /// Quiesce thread context
+    void quiesce() { actualTC->quiesce(); }
+
+    /// Quiesce, suspend, and schedule activate at resume
+    void quiesceTick(Tick resume) { actualTC->quiesceTick(resume); }
+
     void dumpFuncProfile() { actualTC->dumpFuncProfile(); }
 
     void takeOverFrom(ThreadContext *oldContext)
@@ -411,9 +414,6 @@ class ProxyThreadContext : public ThreadContext
     CCReg readCCReg(int reg_idx)
     { return actualTC->readCCReg(reg_idx); }
 
-    const VectorReg &readVectorReg(int reg_idx)
-    { return actualTC->readVectorReg(reg_idx); }
-
     void setIntReg(int reg_idx, uint64_t val)
     { actualTC->setIntReg(reg_idx, val); }
 
@@ -426,9 +426,6 @@ class ProxyThreadContext : public ThreadContext
     void setCCReg(int reg_idx, CCReg val)
     { actualTC->setCCReg(reg_idx, val); }
 
-    void setVectorReg(int reg_idx, const VectorReg &val)
-    { actualTC->setVectorReg(reg_idx, val); }
-
     TheISA::PCState pcState() { return actualTC->pcState(); }
 
     void pcState(const TheISA::PCState &val) { actualTC->pcState(val); }
@@ -465,9 +462,6 @@ class ProxyThreadContext : public ThreadContext
     int flattenCCIndex(int reg)
     { return actualTC->flattenCCIndex(reg); }
 
-    int flattenVectorIndex(int reg)
-    { return actualTC->flattenVectorIndex(reg); }
-
     int flattenMiscIndex(int reg)
     { return actualTC->flattenMiscIndex(reg); }
 
@@ -477,8 +471,8 @@ class ProxyThreadContext : public ThreadContext
     void setStCondFailures(unsigned sc_failures)
     { actualTC->setStCondFailures(sc_failures); }
 
-    void syscall(int64_t callnum)
-    { actualTC->syscall(callnum); }
+    void syscall(int64_t callnum, Fault *fault)
+    { actualTC->syscall(callnum, fault); }
 
     Counter readFuncExeInst() { return actualTC->readFuncExeInst(); }
 
@@ -505,12 +499,6 @@ class ProxyThreadContext : public ThreadContext
 
     void setCCRegFlat(int idx, CCReg val)
     { actualTC->setCCRegFlat(idx, val); }
-
-    const VectorReg &readVectorRegFlat(int idx)
-    { return actualTC->readVectorRegFlat(idx); }
-
-    void setVectorRegFlat(int idx, const VectorReg &val)
-    { actualTC->setVectorRegFlat(idx, val); }
 };
 
 /** @{ */