#include #include .set noreorder .set nomacro mips_attributes FUNCTION (grub_arch_sync_caches) #include "cache_flush.S" j $ra FUNCTION (grub_arch_sync_dma_caches) 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) #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, -4 bne $t1, $zero, 1b addiu $t0, $t0, 0x4 #endif sync_op move $t0, $t2 subu $t1, $t3, $t2 2: #ifdef GRUB_MACHINE_MIPS_LOONGSON cache_op 0, 0($t0) addiu $t1, $t1, -0x20 bne $t1, $zero, 2b addiu $t0, $t0, 0x20 #else cache_op 0, 0($t0) addiu $t1, $t1, -4 bne $t1, $zero, 2b addiu $t0, $t0, 0x4 #endif sync_op move $t0, $t2 subu $t1, $t3, $t2 2: #ifdef GRUB_MACHINE_MIPS_LOONGSON cache_op 23, 0($t0) addiu $t1, $t1, -0x20 bne $t1, $zero, 2b addiu $t0, $t0, 0x20 #else cache_op 23, 0($t0) addiu $t1, $t1, -0x4 bne $t1, $zero, 2b addiu $t0, $t0, 0x4 #endif sync_op jr $ra