12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #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
|