Rev 3167 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3167 | Rev 3913 | ||
---|---|---|---|
Line 68... | Line 68... | ||
68 | ); |
68 | ); |
69 | 69 | ||
70 | return v; |
70 | return v; |
71 | } |
71 | } |
72 | 72 | ||
- | 73 | static inline uint32_t test_and_set(atomic_t *val) { |
|
- | 74 | uint32_t tmp, v; |
|
- | 75 | ||
- | 76 | asm volatile ( |
|
- | 77 | "1:\n" |
|
- | 78 | " ll %2, %1\n" |
|
- | 79 | " bnez %2, 2f\n" |
|
- | 80 | " li %0, %3\n" |
|
- | 81 | " sc %0, %1\n" |
|
- | 82 | " beqz %0, 1b\n" |
|
- | 83 | "2:\n" |
|
- | 84 | : "=&r" (tmp), "+m" (val->count), "=&r" (v) |
|
- | 85 | : "i" (1) |
|
- | 86 | ); |
|
- | 87 | ||
- | 88 | return v; |
|
- | 89 | } |
|
- | 90 | ||
73 | #endif |
91 | #endif |
74 | 92 | ||
75 | /** @} |
93 | /** @} |
76 | */ |
94 | */ |