Mercurial > hg > Members > kono > Cerium
diff TaskManager/Cell/spe/CellDmaManager.cc @ 242:8382f0f8c0b4
dma_wait
author | e065746@localhost.localdomain |
---|---|
date | Sun, 31 May 2009 15:55:00 +0900 |
parents | f8182c7058b5 |
children | e19d2c9e85b0 6bb8725e60ae |
line wrap: on
line diff
--- a/TaskManager/Cell/spe/CellDmaManager.cc Sat May 30 16:21:42 2009 +0900 +++ b/TaskManager/Cell/spe/CellDmaManager.cc Sun May 31 15:55:00 2009 +0900 @@ -37,13 +37,34 @@ * * @param[in] mask Tag for Wait DMA process */ +void +CellDmaManager::start_dmawait_profile() +{ + wait_time = spu_readch(SPU_RdDec); + global_busy_time += busy_time - wait_time; + spu_writech(SPU_WrDec, 0xffffffff); +} + +void +CellDmaManager::end_dmawait_profile() +{ + wait_time = spu_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