view spe/Dma.cc @ 0:68a98d68d62a

commit
author yutaka@localhost.localdomain
date Sun, 28 Mar 2010 19:47:00 +0900
parents
children
line wrap: on
line source

#include <stdio.h>
#include <malloc.h>
#include <spu_intrinsics.h>
#include <spu_mfcio.h>
#include "Dma.h"

void
dma_get(void *buf, unsigned int addr, int size, int tag)
{

  //printf("dma get sie %d\n",size);
  mfc_get(buf, addr, size, tag, 0, 0);

}

void
dma_put(void *buf, unsigned int addr, int size, int tag)
{

  mfc_put(buf, addr, size, tag, 0, 0);

}

int
dma_wait(int tag)
{

  int dma_wait_time;

  spu_writech(MFC_WrTagMask, 1 << tag);
  
  spu_write_decrementer(0xFFFFFFFF);
  dma_wait_time = spu_read_decrementer();
  
  spu_mfcstat(MFC_TAG_UPDATE_ALL);
  
  dma_wait_time = dma_wait_time - spu_read_decrementer();

  return dma_wait_time;

}

int
dma_stat(int tag)
{

  spu_writech(MFC_WrTagMask, 1 << tag); 
  return spu_mfcstat(MFC_TAG_UPDATE_IMMEDIATE);
 
}