rename CopyData to CopyOut and implement CopyIn to copy data
authorNathan Binkert <binkertn@umich.edu>
Thu, 1 Jul 2004 22:00:18 +0000 (18:00 -0400)
committerNathan Binkert <binkertn@umich.edu>
Thu, 1 Jul 2004 22:00:18 +0000 (18:00 -0400)
from the simulator into the simulatee

kern/tru64/dump_mbuf.cc:
    rename CopyData -> CopyOut

--HG--
extra : convert_revision : e3ef27a5762dfc495dcb84a372470464c27557d2

arch/alpha/vtophys.cc
arch/alpha/vtophys.hh
kern/tru64/dump_mbuf.cc

index 7a38b296b9a76c8be395112e268552855a7344cc..f4b2c7ed3e0ec52c83ebcc66886e4cf8aa09f0c3 100644 (file)
@@ -133,14 +133,14 @@ vtomem(ExecContext *xc, Addr vaddr, size_t len)
 }
 
 void
-CopyData(ExecContext *xc, void *dest, Addr vaddr, size_t cplen)
+CopyOut(ExecContext *xc, void *dest, Addr src, size_t cplen)
 {
     Addr paddr;
     char *dmaaddr;
     char *dst = (char *)dest;
     int len;
 
-    paddr = vtophys(xc, vaddr);
+    paddr = vtophys(xc, src);
     len = min((int)(ALPHA_PGBYTES - (paddr & PGOFSET)), (int)cplen);
     dmaaddr = (char *)xc->physmem->dma_addr(paddr, len);
     assert(dmaaddr);
@@ -151,21 +151,21 @@ CopyData(ExecContext *xc, void *dest, Addr vaddr, size_t cplen)
 
     cplen -= len;
     dst += len;
-    vaddr += len;
+    src += len;
 
     while (cplen > ALPHA_PGBYTES) {
-        paddr = vtophys(xc, vaddr);
+        paddr = vtophys(xc, src);
         dmaaddr = (char *)xc->physmem->dma_addr(paddr, ALPHA_PGBYTES);
         assert(dmaaddr);
 
         memcpy(dst, dmaaddr, ALPHA_PGBYTES);
         cplen -= ALPHA_PGBYTES;
         dst += ALPHA_PGBYTES;
-        vaddr += ALPHA_PGBYTES;
+        src += ALPHA_PGBYTES;
     }
 
     if (cplen > 0) {
-        paddr = vtophys(xc, vaddr);
+        paddr = vtophys(xc, src);
         dmaaddr = (char *)xc->physmem->dma_addr(paddr, cplen);
         assert(dmaaddr);
 
@@ -173,6 +173,47 @@ CopyData(ExecContext *xc, void *dest, Addr vaddr, size_t cplen)
     }
 }
 
+void
+CopyIn(ExecContext *xc, Addr dest, void *source, size_t cplen)
+{
+    Addr paddr;
+    char *dmaaddr;
+    char *src = (char *)source;
+    int len;
+
+    paddr = vtophys(xc, dest);
+    len = min((int)(ALPHA_PGBYTES - (paddr & PGOFSET)), (int)cplen);
+    dmaaddr = (char *)xc->physmem->dma_addr(paddr, len);
+    assert(dmaaddr);
+
+    memcpy(dmaaddr, src, len);
+    if (len == cplen)
+        return;
+
+    cplen -= len;
+    src += len;
+    dest += len;
+
+    while (cplen > ALPHA_PGBYTES) {
+        paddr = vtophys(xc, dest);
+        dmaaddr = (char *)xc->physmem->dma_addr(paddr, ALPHA_PGBYTES);
+        assert(dmaaddr);
+
+        memcpy(dmaaddr, src, ALPHA_PGBYTES);
+        cplen -= ALPHA_PGBYTES;
+        src += ALPHA_PGBYTES;
+        dest += ALPHA_PGBYTES;
+    }
+
+    if (cplen > 0) {
+        paddr = vtophys(xc, dest);
+        dmaaddr = (char *)xc->physmem->dma_addr(paddr, cplen);
+        assert(dmaaddr);
+
+        memcpy(dmaaddr, src, cplen);
+    }
+}
+
 void
 CopyString(ExecContext *xc, char *dst, Addr vaddr, size_t maxlen)
 {
index 497a53f0dfdc24160e90f3a0b60b09ba715f3314..7c22e33714e4e831ea6d102ded30c1a9a381fcae 100644 (file)
@@ -44,7 +44,8 @@ Addr vtophys(ExecContext *xc, Addr vaddr);
 uint8_t *vtomem(ExecContext *xc, Addr vaddr, size_t len);
 uint8_t *ptomem(ExecContext *xc, Addr paddr, size_t len);
 
-void CopyData(ExecContext *xc, void *dst, Addr vaddr, size_t len);
+void CopyOut(ExecContext *xc, void *dst, Addr src, size_t len);
+void CopyIn(ExecContext *xc, Addr dst, void *src, size_t len);
 void CopyString(ExecContext *xc, char *dst, Addr vaddr, size_t maxlen);
 
 #endif // __VTOPHYS_H__
index 42a2d719c4204f94c8aa5a99701f458038b3dc4f..9121e823d975e9f72da103ebec0cd0af7739a8dc 100644 (file)
@@ -46,7 +46,7 @@ DumpMbuf(AlphaArguments args)
     Addr addr = (Addr)args;
     struct mbuf m;
 
-    CopyData(xc, &m, addr, sizeof(m));
+    CopyOut(xc, &m, addr, sizeof(m));
 
     int count = m.m_pkthdr.len;
 
@@ -57,7 +57,7 @@ DumpMbuf(AlphaArguments args)
         ccprintf(DebugOut(), "m=%#lx, m->m_data=%#lx, m->m_len=%d\n",
                  addr, m.m_data, m.m_len);
         char *buffer = new char[m.m_len];
-        CopyData(xc, buffer, m.m_data, m.m_len);
+        CopyOut(xc, buffer, m.m_data, m.m_len);
         Trace::rawDump((uint8_t *)buffer, m.m_len);
         delete [] buffer;
 
@@ -65,7 +65,7 @@ DumpMbuf(AlphaArguments args)
         if (!m.m_next)
             break;
 
-        CopyData(xc, &m, m.m_next, sizeof(m));
+        CopyOut(xc, &m, m.m_next, sizeof(m));
     }
 }