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; }
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; }