22 while ( !cbi->m_eeCBData.mode )
26 memcpy(&eeCBDataSend, &cbi->m_eeCBData,
sizeof(eeCBDataSend));
29 if ( eeCBDataSend.mode )
34 mode_tmp = eeCBDataSend.mode;
39 if ( mode_cur & (1 << 0) )
41 mode_cur &= ~(1 << 0);
42 eeCBDataSend.mode = 1;
44 else if ( mode_cur & (1 << 1) )
46 mode_cur &= ~(1 << 1);
47 eeCBDataSend.mode = 2;
49 else if ( mode_cur & (1 << 2) )
51 mode_cur &= ~(1 << 2);
52 eeCBDataSend.mode = 3;
54 else if ( mode_cur & (1 << 8) )
56 mode_cur &= ~(1 << 8);
57 eeCBDataSend.mode = 11;
59 else if ( mode_cur & (1 << 9) )
61 mode_cur &= ~(1 << 9);
62 eeCBDataSend.mode = 12;
64 else if ( mode_cur & (1 << 10) )
66 mode_cur &= ~(1 << 10);
67 eeCBDataSend.mode = 13;
73 sceSifCallRpc(cd, 0, 0, &eeCBDataSend,
sizeof(eeCBDataSend), 0, 0, 0, 0);
75 eeCBDataSend.mode = mode_tmp;
78 eeCBDataSend.mode |= ((u32)1 << 31);
80 sceSifCallRpc(cd, 0, 0, &eeCBDataSend,
sizeof(eeCBDataSend), 0, 0, 0, 0);
82 eeCBDataSend.mode &= ~((u32)1 << 31);
85 if ( cbi->m_eeCBData.mode == eeCBDataSend.mode )
87 cbi->m_eeCBData.mode = 0;
88 iCancelWakeupThread(0);
92 cbi->m_eeCBData.mode &= ~eeCBDataSend.mode;
97#if SDRDRV_OBSOLETE_FUNCS
98int _sce_sdrDMA0CallBackProc(
void *data)
102 g_eeCBInfo.m_eeCBData.mode |= (1 << 0);
103 iWakeupThread(g_eeCBInfo.m_thid_cb);
107int _sce_sdrDMA1CallBackProc(
void *data)
111 g_eeCBInfo.m_eeCBData.mode |= (1 << 1);
112 iWakeupThread(g_eeCBInfo.m_thid_cb);
116int _sce_sdrIRQCallBackProc(
void *data)
120 g_eeCBInfo.m_eeCBData.mode |= (1 << 2);
121 iWakeupThread(g_eeCBInfo.m_thid_cb);
126int _sce_sdrDMA0IntrHandler(
int core,
void *common)
133 cbi->m_eeCBData.mode |= (1 << 8);
134 iWakeupThread(cbi->m_thid_cb);
138int _sce_sdrDMA1IntrHandler(
int core,
void *common)
145 cbi->m_eeCBData.mode |= (1 << 9);
146 iWakeupThread(cbi->m_thid_cb);
150int _sce_sdrSpu2IntrHandler(
int core_bit,
void *common)
157 cbi->m_eeCBData.mode |= (1 << 10);
158 cbi->m_eeCBData.voice_bit = core_bit;
159 iWakeupThread(cbi->m_thid_cb);
163void sce_sdrcb_loop(
void *arg)
170 cbi->m_eeCBData.mode = 0;
171 while ( sceSifBindRpc(&cd, 0x80000704, 0) >= 0 )
175 for ( i = 0; i < 10000; i += 1 )
178 sceSifCmdLoop2(&cd, cbi);
int CpuResumeIntr(int state)
int CpuSuspendIntr(int *state)