Mercurial > hg > Members > kono > Cerium
comparison TaskManager/Cell/spe/CellDmaManager.cc @ 871:ab3cd3aeacff
fix get segment dma tag zero problem
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 04 Jul 2010 16:56:04 +0900 |
parents | 31d0a5baafdf |
children | ad6903dd6419 |
comparison
equal
deleted
inserted
replaced
870:79b2d56aa27a | 871:ab3cd3aeacff |
---|---|
36 { | 36 { |
37 (this->*start_dmawait_profile)(); | 37 (this->*start_dmawait_profile)(); |
38 mfc_write_tag_mask(1 << mask); | 38 mfc_write_tag_mask(1 << mask); |
39 mfc_write_tag_update_all(); | 39 mfc_write_tag_update_all(); |
40 mfc_read_tag_status(); | 40 mfc_read_tag_status(); |
41 __asm__ __volatile__(" sync"); | |
41 (this->*end_dmawait_profile)(&global_wait_time); | 42 (this->*end_dmawait_profile)(&global_wait_time); |
42 } | 43 } |
43 | 44 |
44 void CellDmaManager::mail_write(memaddr data) | 45 void CellDmaManager::mail_write(memaddr data) |
45 { | 46 { |
46 (this->*start_dmawait_profile)(); | 47 (this->*start_dmawait_profile)(); |
47 spu_write_out_mbox((uint32)data); | 48 spu_write_out_mbox((uint32)data); |
49 #if 0 | |
48 if (ABIBIT>32) { | 50 if (ABIBIT>32) { |
49 unsigned long data0 = (unsigned long)data; | 51 unsigned long data0 = (unsigned long)data; |
50 spu_write_out_mbox((uint32)(data0>>4)); | 52 spu_write_out_mbox((uint32)(data0>>32)); |
51 } | 53 } |
54 #endif | |
52 (this->*end_dmawait_profile)(&global_mail_time); | 55 (this->*end_dmawait_profile)(&global_mail_time); |
53 } | 56 } |
54 | 57 |
55 memaddr CellDmaManager::mail_read() | 58 memaddr CellDmaManager::mail_read() |
56 { | 59 { |
57 (this->*start_dmawait_profile)(); | 60 (this->*start_dmawait_profile)(); |
58 memaddr data = (memaddr)spu_read_in_mbox(); | 61 memaddr data = (memaddr)spu_read_in_mbox(); |
62 #if 0 | |
59 if (ABIBIT>32) { | 63 if (ABIBIT>32) { |
60 data += (spu_read_in_mbox()<<4); | 64 data += (spu_read_in_mbox()<<32); |
61 } | 65 } |
66 #endif | |
62 (this->*end_dmawait_profile)(&global_mail_time); | 67 (this->*end_dmawait_profile)(&global_mail_time); |
63 return data; | 68 return data; |
64 } | 69 } |
65 | 70 |
66 void CellDmaManager::dma_loadList(ListDataPtr list, void *buff, uint32 mask) | 71 void CellDmaManager::dma_loadList(ListDataPtr list, void *buff, uint32 mask) |