trapIntrVSync:
lui v0,_hi(Vcount)
lw v0,_lo(Vcount)(v0)
addiu sp,sp,-32
sw s1,20(sp)
move s1,zero
sw s0,16(sp)
lui s0,_hi(sectbase(.data))
addiu s0,s0,_lo(sectbase(.data))
sw ra,24(sp)
addiu v0,v0,1
lui at,_hi(Vcount)
sw v0,_lo(Vcount)(at)
text_88:
lw v0,0(s0)
nop
beqz v0,text_A0
nop
jalr ra,v0
nop
text_A0:
addiu s1,s1,1
slti v0,s1,8
bnez v0,text_88
addiu s0,s0,4
lw ra,24(sp)
lw s1,20(sp)
lw s0,16(sp)
jr ra
addiu sp,sp,32
|
static void (*cbIntrVSync[8])();
int Vcount;
static void trapIntrVSync()
{
int i;
Vcount++;
for(i=0; i<8; i++)
{
if(cbIntrVSync[i])
cbIntrVSync[i]();
}
}
|
trapIntrVSync:
lw $2,Vcount
subu $sp,$sp,32
sw $17,20($sp)
move $17,$0
sw $16,16($sp)
la $16,cbIntrVSync
sw $31,24($sp)
addu $2,$2,1
sw $2,Vcount
$L6:
lw $2,0($16)
nop
beq $2,$0,$L5
jal $31,$2
nop
$L5:
addu $17,$17,1
slt $2,$17,8
bne $2,$0,$L6
addu $16,$16,4
lw $31,24($sp)
lw $17,20($sp)
lw $16,16($sp)
j $31
addu $sp,$sp,32
|