| 101 | } |
| 102 | |
| 103 | void LightLock_Unlock(LightLock* lock) |
| 104 | { |
| 105 | __dmb(); |
| 106 | |
| 107 | s32 val; |
| 108 | do |
| 109 | val = -__ldrex(lock); |
| 110 | while (__strex(lock, val)); |
| 111 | |
| 112 | if (val > 1) |
| 113 | // Wake up exactly one thread |
| 114 | syncArbitrateAddress(lock, ARBITRATION_SIGNAL, 1); |
| 115 | } |
| 116 | |
| 117 | void RecursiveLock_Init(RecursiveLock* lock) |
| 118 | { |
no test coverage detected