Rev 112 | Rev 341 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 112 | Rev 240 | ||
---|---|---|---|
Line 49... | Line 49... | ||
49 | " .set push\n" |
49 | " .set push\n" |
50 | " .set noreorder\n" |
50 | " .set noreorder\n" |
51 | " nop\n" |
51 | " nop\n" |
52 | "1:\n" |
52 | "1:\n" |
53 | " ll %0, %1\n" |
53 | " ll %0, %1\n" |
54 | " addu %0, %0, %2\n" |
54 | " addu %0, %0, %3\n" |
55 | " move %3, %0\n" |
55 | " move %2, %0\n" |
56 | " sc %0, %1\n" |
56 | " sc %0, %1\n" |
57 | " beq %0, 0x0, 1b\n" |
57 | " beq %0, 0x0, 1b\n" |
58 | " move %0, %3\n" |
58 | " move %0, %2\n" |
59 | " .set pop\n" |
59 | " .set pop\n" |
60 | : "=&r" (tmp), "=o" (*val) |
60 | : "=&r" (tmp), "=o" (*val), "=r" (tmp2) |
61 | : "r" (i), "r" (tmp2) |
61 | : "r" (i) |
62 | ); |
62 | ); |
63 | return tmp; |
63 | return tmp; |
64 | } |
64 | } |
65 | 65 | ||
66 | 66 | ||
Line 78... | Line 78... | ||
78 | " .set push\n" |
78 | " .set push\n" |
79 | " .set noreorder\n" |
79 | " .set noreorder\n" |
80 | " nop\n" |
80 | " nop\n" |
81 | "1:\n" |
81 | "1:\n" |
82 | " ll %0, %1\n" |
82 | " ll %0, %1\n" |
83 | " subu %0, %0, %2\n" |
83 | " subu %0, %0, %3\n" |
84 | " move %3, %0\n" |
84 | " move %2, %0\n" |
85 | " sc %0, %1\n" |
85 | " sc %0, %1\n" |
86 | " beq %0, 0x0, 1b\n" |
86 | " beq %0, 0x0, 1b\n" |
87 | " move %0, %3\n" |
87 | " move %0, %2\n" |
88 | " .set pop\n" |
88 | " .set pop\n" |
89 | : "=&r" (tmp), "=o" (*val) |
89 | : "=&r" (tmp), "=o" (*val), "=r" (tmp2) |
90 | : "r" (i), "r" (tmp2) |
90 | : "r" (i) |
91 | ); |
91 | ); |
92 | return tmp; |
92 | return tmp; |
93 | } |
93 | } |
94 | 94 | ||
95 | 95 |