ruby: Make ruby #includes use full paths to the files they're including.
[gem5.git] / src / mem / vport.hh
index 0f3b1f09e24081f6d2747848e37075603690f20e..a8ceaa9fca2319536269ccfaf66dcfae9eb87fb5 100644 (file)
  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Ali Saidi
  */
 
 /**
  * @file
- * Virtual Port Object Decleration. These ports incorporate some translation
+ * Virtual Port Object Declaration. These ports incorporate some translation
  * into their access methods. Thus you can use one to read and write data
  * to/from virtual addresses.
  */
 #ifndef __MEM_VPORT_HH__
 #define __MEM_VPORT_HH__
 
-#include "mem/port.hh"
+#include "mem/port_impl.hh"
 #include "config/full_system.hh"
 #include "arch/vtophys.hh"
 
 
 /** A class that translates a virtual address to a physical address and then
- * calls the above read/write functions. If an execution context is provided the
+ * calls the above read/write functions. If a thread context is provided the
  * address can alway be translated, If not it can only be translated if it is a
  * simple address masking operation (such as alpha super page accesses).
  */
 
+
 class VirtualPort  : public FunctionalPort
 {
   private:
-    ExecContext *xc;
+    ThreadContext *tc;
 
   public:
-    VirtualPort(const std::string &_name, ExecContext *_xc = NULL)
-        : FunctionalPort(_name), xc(_xc)
+    VirtualPort(const std::string &_name, ThreadContext *_tc = NULL)
+        : FunctionalPort(_name), tc(_tc)
     {}
 
-    /** Return true if we have an exec context. This is used to prevent someone
-     * from accidently deleting the cpus statically allocated vport.
-     * @return true if an execution context isn't valid
+    /** Return true if we have an thread context. This is used to
+     * prevent someone from accidently deleting the cpus statically
+     * allocated vport.
+     * @return true if a thread context isn't valid
      */
-    bool nullExecContext() { return xc != NULL; }
+    bool nullThreadContext() { return tc != NULL; }
 
     /** Version of readblob that translates virt->phys and deals
       * with page boundries. */
@@ -72,5 +76,11 @@ class VirtualPort  : public FunctionalPort
     virtual void writeBlob(Addr addr, uint8_t *p, int size);
 };
 
+
+void CopyOut(ThreadContext *tc, void *dest, Addr src, size_t cplen);
+void CopyIn(ThreadContext *tc, Addr dest, void *source, size_t cplen);
+void CopyStringOut(ThreadContext *tc, char *dst, Addr vaddr, size_t maxlen);
+void CopyStringIn(ThreadContext *tc, char *src, Addr vaddr);
+
 #endif //__MEM_VPORT_HH__