| 87 | } |
| 88 | |
| 89 | u32 ARInit(u32* stack_index_addr, u32 num_entries) |
| 90 | { |
| 91 | BOOL old; |
| 92 | u16 refresh; |
| 93 | |
| 94 | if (__AR_init_flag == TRUE) |
| 95 | { |
| 96 | return 0x4000; |
| 97 | } |
| 98 | |
| 99 | OSRegisterVersion(__ARVersion); |
| 100 | |
| 101 | old = OSDisableInterrupts(); |
| 102 | |
| 103 | __AR_Callback = NULL; |
| 104 | |
| 105 | __OSSetInterruptHandler(__OS_INTERRUPT_DSP_ARAM, __ARHandler); |
| 106 | __OSUnmaskInterrupts(OS_INTERRUPTMASK_DSP_ARAM); |
| 107 | |
| 108 | __AR_StackPointer = 0x4000; |
| 109 | __AR_FreeBlocks = num_entries; |
| 110 | __AR_BlockLength = stack_index_addr; |
| 111 | |
| 112 | refresh = (u16)(__DSPRegs[13] & 0x000000ff); |
| 113 | |
| 114 | __DSPRegs[13] = (u16)((__DSPRegs[13] & ~0x000000ff) | (refresh & 0x000000ff)); |
| 115 | |
| 116 | __ARChecksize(); |
| 117 | |
| 118 | __AR_init_flag = TRUE; |
| 119 | |
| 120 | OSRestoreInterrupts(old); |
| 121 | |
| 122 | return __AR_StackPointer; |
| 123 | } |
| 124 | |
| 125 | static void __ARHandler(__OSInterrupt interrupt, OSContext* context) |
| 126 | { |
no test coverage detected