Esempio n. 1
0
File: aram.c Progetto: comex/libogc
u32 AR_Init(u32 *stack_idx_array,u32 num_entries)
{
#ifdef _AR_DEBUG
	u32 freq;
#endif
	u32 level;
	u32 aram_base = 0x4000;

	if(__ARInit_Flag) return aram_base;

	_CPU_ISR_Disable(level);

	__ARDmaCallback = NULL;

	IRQ_Request(IRQ_DSP_ARAM,__ARHandler,NULL);
	__UnmaskIrq(IRQMASK(IRQ_DSP_ARAM));
	
	__ARStackPointer = aram_base;
	__ARFreeBlocks = num_entries;
	__ARBlockLen = stack_idx_array;
#ifdef _AR_DEBUG
	freq = _dspReg[13]&0xff;
	if(((f32)freq)!=156.0 && ((f32)freq)!=176.0) {
		printf("AR_Init(): Illegal SDRAM refresh value(%f)\n",(f32)(freq));
		abort();
	}
#endif
	_dspReg[13] = (_dspReg[13]&~0xff)|(_dspReg[13]&0xff);
	
	__ARCheckSize();
	__ARInit_Flag = 1;
	
	_CPU_ISR_Restore(level);
	return __ARStackPointer;
}
Esempio n. 2
0
u32 AR_Init(u32 *stack_idx_array,u32 num_entries)
{
	u32 level;
	u32 aram_base = 0x4000;

	if(__ARInit_Flag) return aram_base;

	_CPU_ISR_Disable(level);

	__ARDmaCallback = NULL;

	IRQ_Request(IRQ_DSP_ARAM,__ARHandler,NULL);
	__UnmaskIrq(IRQMASK(IRQ_DSP_ARAM));

	__ARStackPointer = aram_base;
	__ARFreeBlocks = num_entries;
	__ARBlockLen = stack_idx_array;
	_dspReg[13] = (_dspReg[13]&~0xff)|(_dspReg[13]&0xff);

	__ARCheckSize();
	__ARInit_Flag = 1;

	_CPU_ISR_Restore(level);
	return __ARStackPointer;
}