PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
s_si.c
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright ps2dev - http://www.ps2dev.org
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
11#include "libspu2_internal.h"
12
13int SpuSetIRQ(int on_off)
14{
15 int v7;
16
17 switch ( on_off )
18 {
19 case SPU_OFF:
20 case SPU_RESET:
21 {
22 vu16 *v2;
23 unsigned int v3;
24
25 v2 = &_spu_RXX[512 * _spu_core];
26 v2[205] &= ~0x40u;
27 v3 = 1;
28 while ( (v2[205] & 0x40) != 0 )
29 {
30 if ( v3 >= 0xF01 )
31 {
32 printf("SPU:T/O [%s]\n", "wait (IRQ/ON)");
33 return -1;
34 }
35 v3 += 1;
36 }
37 DisableIntr(IOP_IRQ_SPU, &v7);
38 break;
39 }
40 default:
41 break;
42 }
43 switch ( on_off )
44 {
45 case SPU_ON:
46 case SPU_RESET:
47 {
48 vu16 *v5;
49 unsigned int v6;
50
51 v5 = &_spu_RXX[512 * _spu_core];
52 v5[205] |= 0x40u;
53 v6 = 1;
54 while ( (v5[205] & 0x40) == 0 )
55 {
56 if ( v6 >= 0xF01 )
57 {
58 printf("SPU:T/O [%s]\n", "wait (IRQ/OFF)");
59 return -1;
60 }
61 v6 += 1;
62 }
63 EnableIntr(IOP_IRQ_SPU);
64 break;
65 }
66 default:
67 break;
68 }
69 return on_off;
70}
int DisableIntr(int irq, int *res)
Definition intrman.c:395
int EnableIntr(int irq)
Definition intrman.c:346