Esempio n. 1
0
static void spu_memload_stereo8(int leftpos,int rightpos,void *src0,size_t size)
{
	uint8 *src = src0;
	uint32 *left  = (uint32*)(leftpos +SPU_RAM_BASE);
	uint32 *right = (uint32*)(rightpos+SPU_RAM_BASE);
	size = (size+7)/8;
	while(size--) {
		unsigned lval,rval,old;
		lval = *src++;
		rval = *src++;
		lval|= (*src++)<<8;
		rval|= (*src++)<<8;
		lval|= (*src++)<<16;
		rval|= (*src++)<<16;
		lval|= (*src++)<<24;
		rval|= (*src++)<<24;
		g2_fifo_wait();
		G2_LOCK(old);
		*left++=lval;
		*right++=rval;
		G2_UNLOCK(old);
	//	g2_write_32(*left++,lval);
	//	g2_write_32(*right++,rval);
	//	g2_fifo_wait();
	}
}
Esempio n. 2
0
static void spu_memload_stereo16(int leftpos, int rightpos, void *src0, size_t size)
{
	register uint16 *src = src0;

#if 0
	sep_data(src, size, 1);
	dcache_flush_range((unsigned)sep_buffer, size);
	
	dmadest = rightpos;
	dmacnt = size / 2;
	
	spu_dma_transfer(sep_buffer[0], leftpos, size / 2, -1, spu_dma_transfer2, 0);
	//spu_dma_transfer(sep_buffer[1], rightpos, size / 2, -1, NULL, 0);
#else

	register uint32 *left  = (uint32*)(leftpos  + SPU_RAM_BASE);
	register uint32 *right = (uint32*)(rightpos + SPU_RAM_BASE);
	
	size = (size+7)/8;
	unsigned lval, rval, old = 0;
	
	while(size--) {
		
		lval = *src++;
		rval = *src++;
		lval|= (*src++)<<16;
		rval|= (*src++)<<16;
		
		g2_fifo_wait();
		G2_LOCK(old);
		*left++=lval;
		*right++=rval;
		G2_UNLOCK(old);
		/*
		g2_write_32(*left++,lval);
		g2_write_32(*right++,rval);
		g2_fifo_wait();*/
	}
#endif
}