Mercurial > hg > Game > Cerium
diff TaskManager/Cell/spe/CellDmaManager.cc @ 1221:2a4ba6366394 draft
fix CellDmaManager
author | Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 23 Jul 2011 07:16:53 +0900 |
parents | a49c02dffe6f |
children | 2187bd10f16d |
line wrap: on
line diff
--- a/TaskManager/Cell/spe/CellDmaManager.cc Sat Jul 23 06:22:06 2011 +0900 +++ b/TaskManager/Cell/spe/CellDmaManager.cc Sat Jul 23 07:16:53 2011 +0900 @@ -20,11 +20,11 @@ if ((unsigned long)addr&0xf) { //s->printf("dma_load is not aligned. addr = 0x%lx, size = %d\n", // (unsigned long)addr, size); - return ; + return buf; } - if (size == 0) return ; - if (s) buf = s->allocate(size); + if (size == 0) return buf; + if (s) buf = s->manager->allocate(size); mfc_get((volatile void *)buf, addr, size, mask, 0, 0); return buf; @@ -33,7 +33,7 @@ void * CellDmaManager::get_writebuf(Scheduler *s,memaddr addr, uint32 size) { - void *b = s->allocaet(size); + void *b = s->manager->allocate(size); return b; } @@ -45,10 +45,11 @@ * @param[in] size Size of Store Data * @param[in] mask DMA tag */ -void CellDmaManager::dma_store(void *buf, memaddr addr, uint32 size, uint32 mask) +void* CellDmaManager::dma_store(Scheduler *s,void *buf, memaddr addr, uint32 size, uint32 mask) { - if (size == 0) return ; + if (size == 0) return buf; mfc_put((volatile void *)buf, addr, size, mask, 0, 0); + return buf; } void CellDmaManager::dma_wait(uint32 mask) @@ -197,7 +198,7 @@ void *CellDmaManager::dma_loadList(Scheduler *s, ListDataPtr list, void *buff, uint32 mask) { - buff = s->allocate(list->size); + buff = s->manager->allocate(list->size); mfc_getl(buff, 0, list->element, sizeof(mfc_list_element_t)*list->length, mask, 0, 0); @@ -213,7 +214,7 @@ void * CellDmaManager::get_writebuf(Scheduler *s,ListDataPtr addr, uint32 size) { - void *b = s->allocate(addr->size); + void *b = s->manager->allocate(addr->size); return b; }