diff TaskManager/Cell/spe/CellDmaManager.cc @ 1417:70f461442b0f draft

null DMA clean up
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 19 Feb 2012 21:01:06 +0900
parents 2187bd10f16d
children ff721740df6b
line wrap: on
line diff
--- a/TaskManager/Cell/spe/CellDmaManager.cc	Sun Feb 19 16:12:25 2012 +0900
+++ b/TaskManager/Cell/spe/CellDmaManager.cc	Sun Feb 19 21:01:06 2012 +0900
@@ -14,22 +14,23 @@
  * @param[in] size Size of Load Data
  * @param[in] mask DMA tag
 */
-void *CellDmaManager::dma_load(Scheduler *s, void *buf, memaddr addr, uint32 size, uint32 mask)
+void *CellDmaManager::dma_load(Scheduler *s, memaddr addr, uint32 size, uint32 mask)
 {
-  
-    if ((unsigned long)addr&0xf) {
-      //s->printf("dma_load is not aligned. addr = 0x%lx, size = %d\n",
-      //     (unsigned long)addr, size);
-      return buf;
-    }
-  
+    void *buf = 0;
     if (size == 0) return buf;
-    if (s) buf = s->manager->allocate(size);
-
+    buf = s->manager->allocate(size);
     mfc_get((volatile void *)buf, addr, size, mask, 0, 0);
     return buf;
 }
 
+void *CellDmaManager::dma_load1(void *buf, memaddr addr, uint32 size, uint32 mask)
+{
+    if (size == 0) return buf;
+    mfc_get((volatile void *)buf, addr, size, mask, 0, 0);
+    return buf;
+}
+
+
 void *
 CellDmaManager::get_writebuf(Scheduler *s,memaddr addr, uint32 size)
 {
@@ -49,35 +50,17 @@
 {
     if (size == 0) return buf;
     mfc_put((volatile void *)buf, addr, size, mask, 0, 0);
-	return buf; 
+    return buf; 
 }
 
 void CellDmaManager::dma_wait(uint32 mask)
 {
-
     (this->*start_dmawait_profile)();
     mfc_write_tag_mask(1 << mask);
     mfc_write_tag_update_all();
     mfc_read_tag_status();
     __asm__ __volatile__("   sync");
     (this->*end_dmawait_profile)(&global_wait_time);
-  
-}
-
-void CellDmaManager::dma_wait(uint32 mask, int cmd)
-{
-
-    unsigned long long wait = 0;
-
-    (this->*start_dmawait_profile)();
-    mfc_write_tag_mask(1 << mask);
-    mfc_write_tag_update_all();
-    mfc_read_tag_status();
-    __asm__ __volatile__("   sync");
-    (this->*end_dmawait_profile)(&wait);
-
-    global_wait_time += wait;
-
 }
 
 #ifndef MAIL_QUEUE
@@ -135,7 +118,7 @@
 void CellDmaManager::mail_write_finish_list(memaddr data)
 {
 
-  unsigned long long wait = 0;
+    unsigned long long wait = 0;
 
     while (mail_queue->count()) {
       (this->*start_dmawait_profile)();
@@ -197,10 +180,9 @@
 
 
 
-void *CellDmaManager::dma_loadList(Scheduler *s, ListDataPtr list, void *buff, uint32 mask)
+void *CellDmaManager::dma_loadList(Scheduler *s, ListDataPtr list, uint32 mask)
 {
-    buff = s->manager->allocate(list->size);
-
+    void *buff = s->manager->allocate(list->size);
     mfc_getl(buff, 0, list->element, sizeof(mfc_list_element_t)*list->length,
 	     mask, 0, 0);
     return buff;