#ifndef CACHE_OP_DEFINED #define CACHE_OP_DEFINED 1 .macro cache_op op addr .set mips3 cache \op, \addr .set mips1 .endm .macro sync_op .set mips3 sync .set mips1 .endm #endif move $t2, $a0 addu $t3, $a0, $a1 srl $t2, $t2, 5 sll $t2, $t2, 5 addu $t3, $t3, 0x1f srl $t3, $t3, 5 sll $t3, $t3, 5 move $t0, $t2 subu $t1, $t3, $t2 1: cache_op 1, 0($t0) /* All four ways. */ #ifdef GRUB_MACHINE_MIPS_LOONGSON cache_op 1, 1($t0) cache_op 1, 2($t0) cache_op 1, 3($t0) addiu $t1, $t1, -0x20 bne $t1, $zero, 1b addiu $t0, $t0, 0x20 #else addiu $t1, $t1, -0x4 bne $t1, $zero, 1b addiu $t0, $t0, 0x4 #endif sync_op move $t0, $t2 subu $t1, $t3, $t2 2: cache_op 0, 0($t0) #ifdef GRUB_MACHINE_MIPS_LOONGSON addiu $t1, $t1, -0x20 bne $t1, $zero, 2b addiu $t0, $t0, 0x20 #else addiu $t1, $t1, -0x4 bne $t1, $zero, 2b addiu $t0, $t0, 0x4 #endif sync_op