view TaskManager/Cell/spe/CellDmaManager.h @ 629:8843edf37c0e

Cell 64 bit tried, but not yet worked. Cell's list DMA is 32bit.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 18 Nov 2009 13:32:58 +0900
parents 2cfbb36e221a
children 3b6290c05f9f
line wrap: on
line source

#ifndef INCLUDED_CELL_DMA_MANAGER
#define INCLUDED_CELL_DMA_MANAGER

#include "base.h"
#include "types.h"
#include "DmaManager.h"

#include <spu_mfcio.h>

#define SPU_PROFILE 1

class CellDmaManager : public DmaManager {
public:
    BASE_NEW_DELETE(CellDmaManager);

    typedef struct dma_list {
	uint32 addr;  // should be memaddr, but in Cell's specification...
	uint32 size;
    } DmaList, *DmaListPtr;

    /* variables */
    unsigned int wait_time, busy_time;
    unsigned long long global_busy_time, global_wait_time;

    /* functions */
    void dma_load(void *buf, memaddr addr, uint32 size, uint32 mask);
    void dma_store(void *buf, memaddr addr, uint32 size, uint32 mask);
    void dma_wait(uint32 mask) ;
    void start_dmawait_profile();
    void end_dmawait_profile();
    void show_dma_wait(int cpu);

    void mail_write(memaddr data);
    memaddr mail_read();
    void dma_loadList(ListDataPtr list, void *buff, uint32 mask);
    void dma_storeList(ListDataPtr, void *buff, uint32 mask);
};

#endif