startIntrVSync:
addiu sp,sp,-24
lui a0,_hi(sectbase(.data))
addiu a0,a0,_lo(sectbase(.data))
lui v1,_hi(data_24)
lw v1,_lo(data_24)(v1)
li v0,256
sw ra,16(sp)
sw v0,0(v1)
lui at,_hi(Vcount)
sw zero,_lo(Vcount)(at)
jal memclr
li a1,8
lui a1,_hi(text_58)
addiu a1,a1,_lo(trapIntrVSync)
jal InterruptCallback
move a0,zero
lui v0,_hi(text_C4)
addiu v0,v0,_lo(setIntrVSync)
lw ra,16(sp)
addiu sp,sp,24
jr ra
nop
|
static void (*cbIntrVSync[8])();
int Vcount;
static volatile u_long *t1_mode = (void *)0x1f801114;
void *startIntrVSync()
{
*t1_mode = 0x0100;
Vcount = 0;
memclr(cbIntrVSync, 8);
InterruptCallback(0, trapIntrVSync);
return setIntrVSync;
}
|
startIntrVSync:
subu $sp,$sp,24
la $4,cbIntrVSync
lw $3,t1_mode
li $2,0x00000100
sw $31,16($sp)
sw $2,0($3)
sw $0,Vcount
jal memclr
li $5,0x00000008
la $5,trapIntrVSync
jal InterruptCallback
move $4,$0
la $2,setIntrVSync
lw $31,16($sp)
addu $sp,$sp,24
j $31
nop
|