diff TaskManager/Cell/spe/CellDmaManager.cc @ 239:ae6aa53faf70

hey
author admin@mcbk.cr.ie.u-ryukyu.ac.jp
date Fri, 29 May 2009 15:34:13 +0900
parents 5cde66c926b4
children f8182c7058b5
line wrap: on
line diff
--- a/TaskManager/Cell/spe/CellDmaManager.cc	Fri May 29 13:43:52 2009 +0900
+++ b/TaskManager/Cell/spe/CellDmaManager.cc	Fri May 29 15:34:13 2009 +0900
@@ -38,11 +38,33 @@
  * @param[in] mask Tag for Wait DMA process
  */
 void
+CellDmaManager::start_dmawait_profile()
+{
+    wait_time = readch(SPU_RdDec); 
+    global_busy_time += busy_time - wait_time;
+    writech(SPU_WrDec, 0xffffffff);
+}
+
+void
+CellDmaManager::end_dmawait_profile()
+{
+    wait_time = readch(SPU_RdDec);
+    global_wait_time += 0xffffffff - wait_time;
+    busy_time = wait_time;
+}
+
+void
 CellDmaManager::dma_wait(uint32 mask)
 {
+#ifdef SPU_PROFILE
+    start_dmawait_profile();
+#endif
     mfc_write_tag_mask(1 << mask);
     mfc_write_tag_update_all();
     mfc_read_tag_status();
+#ifdef SPU_PROFILE
+    end_dmawait_profile();
+#endif
 }
 
 void