sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

osInvalDCache.s (1240B)


      1 .set noat      // allow manual use of $at
      2 .set noreorder // don't insert nops after branches
      3 
      4 #include "macros.inc"
      5 
      6 
      7 .section .text, "ax"
      8 
      9 glabel osInvalDCache
     10     blez  $a1, .L80323500
     11      nop
     12     li    $t3, 8192
     13     sltu  $at, $a1, $t3
     14     beqz  $at, .L80323508
     15      nop
     16     move  $t0, $a0
     17     addu  $t1, $a0, $a1
     18     sltu  $at, $t0, $t1
     19     beqz  $at, .L80323500
     20      nop
     21 #ifdef VERSION_CN
     22     addiu $t1, $t1, -0x10
     23     andi  $t2, $t0, 0xf
     24     beqz  $t2, .L803234D0
     25      nop
     26 #else
     27     andi  $t2, $t0, 0xf
     28     beqz  $t2, .L803234D0
     29      addiu $t1, $t1, -0x10
     30 #endif
     31     subu  $t0, $t0, $t2
     32     cache 0x15, ($t0)
     33     sltu  $at, $t0, $t1
     34     beqz  $at, .L80323500
     35      nop
     36     addiu $t0, $t0, 0x10
     37 .L803234D0:
     38     andi  $t2, $t1, 0xf
     39     beqz  $t2, .L803234F0
     40      nop
     41     subu  $t1, $t1, $t2
     42     cache 0x15, 0x10($t1)
     43     sltu  $at, $t1, $t0
     44     bnez  $at, .L80323500
     45      nop
     46 .L803234F0:
     47     cache 0x11, ($t0)
     48     sltu  $at, $t0, $t1
     49     bnez  $at, .L803234F0
     50      addiu $t0, $t0, 0x10
     51 .L80323500:
     52     jr    $ra
     53      nop
     54 
     55 .L80323508:
     56     li    $t0, K0BASE
     57     addu  $t1, $t0, $t3
     58     addiu $t1, $t1, -0x10
     59 .L80323514:
     60     cache 1, ($t0)
     61     sltu  $at, $t0, $t1
     62     bnez  $at, .L80323514
     63      addiu $t0, $t0, 0x10
     64     jr    $ra
     65      nop