Advertisement
GeeckoDev

sceGe_lazy_31129B95

Mar 10th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.97 KB | None | 0 0
  1. s32 sceGe_lazy_31129B95(s32 arg0, s32 arg1)
  2. {
  3.     s32 tmp0;
  4.     s32 tmp1;
  5.  
  6.     if (arg0 == g_b80) {
  7.         g_b84 = arg1;
  8.  
  9.         if (arg1 != 0) {
  10.             g_b88++;
  11.  
  12.             if (g_b88 < g_b8c) {
  13.                 return 0;
  14.             }
  15.         }
  16.     }
  17.  
  18.     // loc_0000017C
  19.  
  20.     if (g_b80 < 0) {
  21.         goto loc_000001C0;
  22.     }
  23.  
  24.     do {
  25.         /* begin atomic RMW */
  26.         asm __volatile__(
  27.             "ll %0, (%1)"
  28.             : "=r" (tmp0)
  29.             : "r" (&g_b80)
  30.         );
  31.  
  32.         tmp1 = -1;
  33.  
  34.         if (tmp0 != g_b80) {
  35.             goto loc_000001C0;
  36.         }
  37.  
  38.         /* end atomic RMW */
  39.         /* if an atomic update as occured, %0 will be set to 1 */
  40.         asm __volatile__(
  41.             "sc %0, (%1)"
  42.             : "=r" (tmp1)
  43.             : "r" (&g_b80)
  44.         );
  45.     } while (!tmp1);
  46.  
  47.     $at = 0
  48.     $a0 = tmp0
  49.     $a1 = g_b84
  50.     $a2 = g_b8c
  51.     $a3 = g_b84
  52.     $v0 = g_b80
  53.     $v1 = -1
  54. loc_000001C0:
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement