По ходу всяких близких рассмотрений PSP Internals буду кидать сюда "C" полуфабрикат всяких интересных функций.
(Просьба по возможности не засорять здесь, а типо спрашивать этц, в какой-то другой ветке)
sceKernelCpuSuspendIntr
unsigned int sceKernelCpuSuspendIntr(void)
{
unsigned int oldstatus;
__asm__ volatile (
"mfic %0,$0\n"
"mtic $0,$0\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
:"=r"(oldstatus)
);
return oldstatus;
}
sceKernelCpuResumeIntr
void sceKernelCpuResumeIntr(unsigned int status)
{
__asm__ volatile (
"mtic %0,$0\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
:
:"r"(status)
);
}
sceKernelCpuResumeIntrWithSync
void sceKernelCpuResumeIntrWithSync(unsigned int status)
{
__asm__ volatile (
"sync\n"
"nop\n"
"sync\n"
"nop\n"
"mtic %0,$0\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
"nop\n"
:
:"r"(status)
);
}
sceKernelCpuEnableIntr
void sceKernelCpuEnableIntr(void)
{
__asm__ volatile (
"addiu $2,$0,1\n"
"mtic $2,$0\n"
);
}
Тема в архиве.