| 1265 | } |
| 1266 | |
| 1267 | static bool |
| 1268 | isAlreadyReported(struct CSourceLocation *pLocation) |
| 1269 | { |
| 1270 | /* |
| 1271 | * This code is shared between libc, kernel and standalone usage. |
| 1272 | * It shall work in early bootstrap phase of both of them. |
| 1273 | */ |
| 1274 | |
| 1275 | uint32_t siOldValue; |
| 1276 | volatile uint32_t *pLine; |
| 1277 | |
| 1278 | ASSERT(pLocation); |
| 1279 | |
| 1280 | pLine = &pLocation->mLine; |
| 1281 | |
| 1282 | do { |
| 1283 | siOldValue = *pLine; |
| 1284 | } while (__sync_val_compare_and_swap(pLine, siOldValue, siOldValue | ACK_REPORTED) != siOldValue); |
| 1285 | |
| 1286 | return ISSET(siOldValue, ACK_REPORTED); |
| 1287 | } |
| 1288 | |
| 1289 | static size_t |
| 1290 | zDeserializeTypeWidth(struct CTypeDescriptor *pType) |
no outgoing calls
no test coverage detected