History

locking/atomic: add arch_atomic_long*()

Now that all architectures provide arch_{atomic,atomic64}_*(), we can build arch_atomic_long_*() atop these, which can be safely used in noinstr code. The regular atomic_long_*() wrappers are built atop these, as we do for {atomic,atomic64}_*() atop arch_{atomic,atomic64}_*(). We don't provide arch_* versions of the cond_read*() variants, as we don't have arch_* versions of the underlying atomic/atomic64 functions (nor the smp_cond_load*() helpers these are typically based on). Note that the headers in this patch under include/linux/atomic/ are generated by the scripts in scripts/atomic/.

Mark Rutland committed 5 years ago

Commit 67d1b0d1 parent e3d18ce5 files · +916 −333Browse files

Unified · Split

5 files
  1. include/linux/atomic.h +1 −1
  2. include/linux/atomic/atomic-instrumented.h +579 −1
  3. include/linux/atomic/atomic-long.h +329 −329
  4. scripts/atomic/gen-atomic-instrumented.sh +5 −0
  5. scripts/atomic/gen-atomic-long.sh +2 −2
include/linux/atomic.h+1−1
@@ -78,7 +78,7 @@ · 77 unmodified lines
78})78})
79 79
80#include <linux/atomic/atomic-arch-fallback.h>80#include <linux/atomic/atomic-arch-fallback.h>
81#include <linux/atomic/atomic-instrumented.h>
82#include <linux/atomic/atomic-long.h>81#include <linux/atomic/atomic-long.h>
82#include <linux/atomic/atomic-instrumented.h>
83 83
84#endif /* _LINUX_ATOMIC_H */84#endif /* _LINUX_ATOMIC_H */
include/linux/atomic/atomic-instrumented.h+579−1
@@ -1177,6 +1177,584 @@ atomic64_dec_if_positive(atomic64_t *v) · 1176 unmodified lines
1177 return arch_atomic64_dec_if_positive(v);1177 return arch_atomic64_dec_if_positive(v);
1178}1178}
1179 1179
1180static __always_inline long
1181atomic_long_read(const atomic_long_t *v)
1182{
1183 instrument_atomic_read(v, sizeof(*v));
1184 return arch_atomic_long_read(v);
1185}
1186
1187static __always_inline long
1188atomic_long_read_acquire(const atomic_long_t *v)
1189{
1190 instrument_atomic_read(v, sizeof(*v));
1191 return arch_atomic_long_read_acquire(v);
1192}
1193
1194static __always_inline void
1195atomic_long_set(atomic_long_t *v, long i)
1196{
1197 instrument_atomic_write(v, sizeof(*v));
1198 arch_atomic_long_set(v, i);
1199}
1200
1201static __always_inline void
1202atomic_long_set_release(atomic_long_t *v, long i)
1203{
1204 instrument_atomic_write(v, sizeof(*v));
1205 arch_atomic_long_set_release(v, i);
1206}
1207
1208static __always_inline void
1209atomic_long_add(long i, atomic_long_t *v)
1210{
1211 instrument_atomic_read_write(v, sizeof(*v));
1212 arch_atomic_long_add(i, v);
1213}
1214
1215static __always_inline long
1216atomic_long_add_return(long i, atomic_long_t *v)
1217{
1218 instrument_atomic_read_write(v, sizeof(*v));
1219 return arch_atomic_long_add_return(i, v);
1220}
1221
1222static __always_inline long
1223atomic_long_add_return_acquire(long i, atomic_long_t *v)
1224{
1225 instrument_atomic_read_write(v, sizeof(*v));
1226 return arch_atomic_long_add_return_acquire(i, v);
1227}
1228
1229static __always_inline long
1230atomic_long_add_return_release(long i, atomic_long_t *v)
1231{
1232 instrument_atomic_read_write(v, sizeof(*v));
1233 return arch_atomic_long_add_return_release(i, v);
1234}
1235
1236static __always_inline long
1237atomic_long_add_return_relaxed(long i, atomic_long_t *v)
1238{
1239 instrument_atomic_read_write(v, sizeof(*v));
1240 return arch_atomic_long_add_return_relaxed(i, v);
1241}
1242
1243static __always_inline long
1244atomic_long_fetch_add(long i, atomic_long_t *v)
1245{
1246 instrument_atomic_read_write(v, sizeof(*v));
1247 return arch_atomic_long_fetch_add(i, v);
1248}
1249
1250static __always_inline long
1251atomic_long_fetch_add_acquire(long i, atomic_long_t *v)
1252{
1253 instrument_atomic_read_write(v, sizeof(*v));
1254 return arch_atomic_long_fetch_add_acquire(i, v);
1255}
1256
1257static __always_inline long
1258atomic_long_fetch_add_release(long i, atomic_long_t *v)
1259{
1260 instrument_atomic_read_write(v, sizeof(*v));
1261 return arch_atomic_long_fetch_add_release(i, v);
1262}
1263
1264static __always_inline long
1265atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)
1266{
1267 instrument_atomic_read_write(v, sizeof(*v));
1268 return arch_atomic_long_fetch_add_relaxed(i, v);
1269}
1270
1271static __always_inline void
1272atomic_long_sub(long i, atomic_long_t *v)
1273{
1274 instrument_atomic_read_write(v, sizeof(*v));
1275 arch_atomic_long_sub(i, v);
1276}
1277
1278static __always_inline long
1279atomic_long_sub_return(long i, atomic_long_t *v)
1280{
1281 instrument_atomic_read_write(v, sizeof(*v));
1282 return arch_atomic_long_sub_return(i, v);
1283}
1284
1285static __always_inline long
1286atomic_long_sub_return_acquire(long i, atomic_long_t *v)
1287{
1288 instrument_atomic_read_write(v, sizeof(*v));
1289 return arch_atomic_long_sub_return_acquire(i, v);
1290}
1291
1292static __always_inline long
1293atomic_long_sub_return_release(long i, atomic_long_t *v)
1294{
1295 instrument_atomic_read_write(v, sizeof(*v));
1296 return arch_atomic_long_sub_return_release(i, v);
1297}
1298
1299static __always_inline long
1300atomic_long_sub_return_relaxed(long i, atomic_long_t *v)
1301{
1302 instrument_atomic_read_write(v, sizeof(*v));
1303 return arch_atomic_long_sub_return_relaxed(i, v);
1304}
1305
1306static __always_inline long
1307atomic_long_fetch_sub(long i, atomic_long_t *v)
1308{
1309 instrument_atomic_read_write(v, sizeof(*v));
1310 return arch_atomic_long_fetch_sub(i, v);
1311}
1312
1313static __always_inline long
1314atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)
1315{
1316 instrument_atomic_read_write(v, sizeof(*v));
1317 return arch_atomic_long_fetch_sub_acquire(i, v);
1318}
1319
1320static __always_inline long
1321atomic_long_fetch_sub_release(long i, atomic_long_t *v)
1322{
1323 instrument_atomic_read_write(v, sizeof(*v));
1324 return arch_atomic_long_fetch_sub_release(i, v);
1325}
1326
1327static __always_inline long
1328atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)
1329{
1330 instrument_atomic_read_write(v, sizeof(*v));
1331 return arch_atomic_long_fetch_sub_relaxed(i, v);
1332}
1333
1334static __always_inline void
1335atomic_long_inc(atomic_long_t *v)
1336{
1337 instrument_atomic_read_write(v, sizeof(*v));
1338 arch_atomic_long_inc(v);
1339}
1340
1341static __always_inline long
1342atomic_long_inc_return(atomic_long_t *v)
1343{
1344 instrument_atomic_read_write(v, sizeof(*v));
1345 return arch_atomic_long_inc_return(v);
1346}
1347
1348static __always_inline long
1349atomic_long_inc_return_acquire(atomic_long_t *v)
1350{
1351 instrument_atomic_read_write(v, sizeof(*v));
1352 return arch_atomic_long_inc_return_acquire(v);
1353}
1354
1355static __always_inline long
1356atomic_long_inc_return_release(atomic_long_t *v)
1357{
1358 instrument_atomic_read_write(v, sizeof(*v));
1359 return arch_atomic_long_inc_return_release(v);
1360}
1361
1362static __always_inline long
1363atomic_long_inc_return_relaxed(atomic_long_t *v)
1364{
1365 instrument_atomic_read_write(v, sizeof(*v));
1366 return arch_atomic_long_inc_return_relaxed(v);
1367}
1368
1369static __always_inline long
1370atomic_long_fetch_inc(atomic_long_t *v)
1371{
1372 instrument_atomic_read_write(v, sizeof(*v));
1373 return arch_atomic_long_fetch_inc(v);
1374}
1375
1376static __always_inline long
1377atomic_long_fetch_inc_acquire(atomic_long_t *v)
1378{
1379 instrument_atomic_read_write(v, sizeof(*v));
1380 return arch_atomic_long_fetch_inc_acquire(v);
1381}
1382
1383static __always_inline long
1384atomic_long_fetch_inc_release(atomic_long_t *v)
1385{
1386 instrument_atomic_read_write(v, sizeof(*v));
1387 return arch_atomic_long_fetch_inc_release(v);
1388}
1389
1390static __always_inline long
1391atomic_long_fetch_inc_relaxed(atomic_long_t *v)
1392{
1393 instrument_atomic_read_write(v, sizeof(*v));
1394 return arch_atomic_long_fetch_inc_relaxed(v);
1395}
1396
1397static __always_inline void
1398atomic_long_dec(atomic_long_t *v)
1399{
1400 instrument_atomic_read_write(v, sizeof(*v));
1401 arch_atomic_long_dec(v);
1402}
1403
1404static __always_inline long
1405atomic_long_dec_return(atomic_long_t *v)
1406{
1407 instrument_atomic_read_write(v, sizeof(*v));
1408 return arch_atomic_long_dec_return(v);
1409}
1410
1411static __always_inline long
1412atomic_long_dec_return_acquire(atomic_long_t *v)
1413{
1414 instrument_atomic_read_write(v, sizeof(*v));
1415 return arch_atomic_long_dec_return_acquire(v);
1416}
1417
1418static __always_inline long
1419atomic_long_dec_return_release(atomic_long_t *v)
1420{
1421 instrument_atomic_read_write(v, sizeof(*v));
1422 return arch_atomic_long_dec_return_release(v);
1423}
1424
1425static __always_inline long
1426atomic_long_dec_return_relaxed(atomic_long_t *v)
1427{
1428 instrument_atomic_read_write(v, sizeof(*v));
1429 return arch_atomic_long_dec_return_relaxed(v);
1430}
1431
1432static __always_inline long
1433atomic_long_fetch_dec(atomic_long_t *v)
1434{
1435 instrument_atomic_read_write(v, sizeof(*v));
1436 return arch_atomic_long_fetch_dec(v);
1437}
1438
1439static __always_inline long
1440atomic_long_fetch_dec_acquire(atomic_long_t *v)
1441{
1442 instrument_atomic_read_write(v, sizeof(*v));
1443 return arch_atomic_long_fetch_dec_acquire(v);
1444}
1445
1446static __always_inline long
1447atomic_long_fetch_dec_release(atomic_long_t *v)
1448{
1449 instrument_atomic_read_write(v, sizeof(*v));
1450 return arch_atomic_long_fetch_dec_release(v);
1451}
1452
1453static __always_inline long
1454atomic_long_fetch_dec_relaxed(atomic_long_t *v)
1455{
1456 instrument_atomic_read_write(v, sizeof(*v));
1457 return arch_atomic_long_fetch_dec_relaxed(v);
1458}
1459
1460static __always_inline void
1461atomic_long_and(long i, atomic_long_t *v)
1462{
1463 instrument_atomic_read_write(v, sizeof(*v));
1464 arch_atomic_long_and(i, v);
1465}
1466
1467static __always_inline long
1468atomic_long_fetch_and(long i, atomic_long_t *v)
1469{
1470 instrument_atomic_read_write(v, sizeof(*v));
1471 return arch_atomic_long_fetch_and(i, v);
1472}
1473
1474static __always_inline long
1475atomic_long_fetch_and_acquire(long i, atomic_long_t *v)
1476{
1477 instrument_atomic_read_write(v, sizeof(*v));
1478 return arch_atomic_long_fetch_and_acquire(i, v);
1479}
1480
1481static __always_inline long
1482atomic_long_fetch_and_release(long i, atomic_long_t *v)
1483{
1484 instrument_atomic_read_write(v, sizeof(*v));
1485 return arch_atomic_long_fetch_and_release(i, v);
1486}
1487
1488static __always_inline long
1489atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)
1490{
1491 instrument_atomic_read_write(v, sizeof(*v));
1492 return arch_atomic_long_fetch_and_relaxed(i, v);
1493}
1494
1495static __always_inline void
1496atomic_long_andnot(long i, atomic_long_t *v)
1497{
1498 instrument_atomic_read_write(v, sizeof(*v));
1499 arch_atomic_long_andnot(i, v);
1500}
1501
1502static __always_inline long
1503atomic_long_fetch_andnot(long i, atomic_long_t *v)
1504{
1505 instrument_atomic_read_write(v, sizeof(*v));
1506 return arch_atomic_long_fetch_andnot(i, v);
1507}
1508
1509static __always_inline long
1510atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)
1511{
1512 instrument_atomic_read_write(v, sizeof(*v));
1513 return arch_atomic_long_fetch_andnot_acquire(i, v);
1514}
1515
1516static __always_inline long
1517atomic_long_fetch_andnot_release(long i, atomic_long_t *v)
1518{
1519 instrument_atomic_read_write(v, sizeof(*v));
1520 return arch_atomic_long_fetch_andnot_release(i, v);
1521}
1522
1523static __always_inline long
1524atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)
1525{
1526 instrument_atomic_read_write(v, sizeof(*v));
1527 return arch_atomic_long_fetch_andnot_relaxed(i, v);
1528}
1529
1530static __always_inline void
1531atomic_long_or(long i, atomic_long_t *v)
1532{
1533 instrument_atomic_read_write(v, sizeof(*v));
1534 arch_atomic_long_or(i, v);
1535}
1536
1537static __always_inline long
1538atomic_long_fetch_or(long i, atomic_long_t *v)
1539{
1540 instrument_atomic_read_write(v, sizeof(*v));
1541 return arch_atomic_long_fetch_or(i, v);
1542}
1543
1544static __always_inline long
1545atomic_long_fetch_or_acquire(long i, atomic_long_t *v)
1546{
1547 instrument_atomic_read_write(v, sizeof(*v));
1548 return arch_atomic_long_fetch_or_acquire(i, v);
1549}
1550
1551static __always_inline long
1552atomic_long_fetch_or_release(long i, atomic_long_t *v)
1553{
1554 instrument_atomic_read_write(v, sizeof(*v));
1555 return arch_atomic_long_fetch_or_release(i, v);
1556}
1557
1558static __always_inline long
1559atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)
1560{
1561 instrument_atomic_read_write(v, sizeof(*v));
1562 return arch_atomic_long_fetch_or_relaxed(i, v);
1563}
1564
1565static __always_inline void
1566atomic_long_xor(long i, atomic_long_t *v)
1567{
1568 instrument_atomic_read_write(v, sizeof(*v));
1569 arch_atomic_long_xor(i, v);
1570}
1571
1572static __always_inline long
1573atomic_long_fetch_xor(long i, atomic_long_t *v)
1574{
1575 instrument_atomic_read_write(v, sizeof(*v));
1576 return arch_atomic_long_fetch_xor(i, v);
1577}
1578
1579static __always_inline long
1580atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)
1581{
1582 instrument_atomic_read_write(v, sizeof(*v));
1583 return arch_atomic_long_fetch_xor_acquire(i, v);
1584}
1585
1586static __always_inline long
1587atomic_long_fetch_xor_release(long i, atomic_long_t *v)
1588{
1589 instrument_atomic_read_write(v, sizeof(*v));
1590 return arch_atomic_long_fetch_xor_release(i, v);
1591}
1592
1593static __always_inline long
1594atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)
1595{
1596 instrument_atomic_read_write(v, sizeof(*v));
1597 return arch_atomic_long_fetch_xor_relaxed(i, v);
1598}
1599
1600static __always_inline long
1601atomic_long_xchg(atomic_long_t *v, long i)
1602{
1603 instrument_atomic_read_write(v, sizeof(*v));
1604 return arch_atomic_long_xchg(v, i);
1605}
1606
1607static __always_inline long
1608atomic_long_xchg_acquire(atomic_long_t *v, long i)
1609{
1610 instrument_atomic_read_write(v, sizeof(*v));
1611 return arch_atomic_long_xchg_acquire(v, i);
1612}
1613
1614static __always_inline long
1615atomic_long_xchg_release(atomic_long_t *v, long i)
1616{
1617 instrument_atomic_read_write(v, sizeof(*v));
1618 return arch_atomic_long_xchg_release(v, i);
1619}
1620
1621static __always_inline long
1622atomic_long_xchg_relaxed(atomic_long_t *v, long i)
1623{
1624 instrument_atomic_read_write(v, sizeof(*v));
1625 return arch_atomic_long_xchg_relaxed(v, i);
1626}
1627
1628static __always_inline long
1629atomic_long_cmpxchg(atomic_long_t *v, long old, long new)
1630{
1631 instrument_atomic_read_write(v, sizeof(*v));
1632 return arch_atomic_long_cmpxchg(v, old, new);
1633}
1634
1635static __always_inline long
1636atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)
1637{
1638 instrument_atomic_read_write(v, sizeof(*v));
1639 return arch_atomic_long_cmpxchg_acquire(v, old, new);
1640}
1641
1642static __always_inline long
1643atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)
1644{
1645 instrument_atomic_read_write(v, sizeof(*v));
1646 return arch_atomic_long_cmpxchg_release(v, old, new);
1647}
1648
1649static __always_inline long
1650atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)
1651{
1652 instrument_atomic_read_write(v, sizeof(*v));
1653 return arch_atomic_long_cmpxchg_relaxed(v, old, new);
1654}
1655
1656static __always_inline bool
1657atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)
1658{
1659 instrument_atomic_read_write(v, sizeof(*v));
1660 instrument_atomic_read_write(old, sizeof(*old));
1661 return arch_atomic_long_try_cmpxchg(v, old, new);
1662}
1663
1664static __always_inline bool
1665atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)
1666{
1667 instrument_atomic_read_write(v, sizeof(*v));
1668 instrument_atomic_read_write(old, sizeof(*old));
1669 return arch_atomic_long_try_cmpxchg_acquire(v, old, new);
1670}
1671
1672static __always_inline bool
1673atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)
1674{
1675 instrument_atomic_read_write(v, sizeof(*v));
1676 instrument_atomic_read_write(old, sizeof(*old));
1677 return arch_atomic_long_try_cmpxchg_release(v, old, new);
1678}
1679
1680static __always_inline bool
1681atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)
1682{
1683 instrument_atomic_read_write(v, sizeof(*v));
1684 instrument_atomic_read_write(old, sizeof(*old));
1685 return arch_atomic_long_try_cmpxchg_relaxed(v, old, new);
1686}
1687
1688static __always_inline bool
1689atomic_long_sub_and_test(long i, atomic_long_t *v)
1690{
1691 instrument_atomic_read_write(v, sizeof(*v));
1692 return arch_atomic_long_sub_and_test(i, v);
1693}
1694
1695static __always_inline bool
1696atomic_long_dec_and_test(atomic_long_t *v)
1697{
1698 instrument_atomic_read_write(v, sizeof(*v));
1699 return arch_atomic_long_dec_and_test(v);
1700}
1701
1702static __always_inline bool
1703atomic_long_inc_and_test(atomic_long_t *v)
1704{
1705 instrument_atomic_read_write(v, sizeof(*v));
1706 return arch_atomic_long_inc_and_test(v);
1707}
1708
1709static __always_inline bool
1710atomic_long_add_negative(long i, atomic_long_t *v)
1711{
1712 instrument_atomic_read_write(v, sizeof(*v));
1713 return arch_atomic_long_add_negative(i, v);
1714}
1715
1716static __always_inline long
1717atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)
1718{
1719 instrument_atomic_read_write(v, sizeof(*v));
1720 return arch_atomic_long_fetch_add_unless(v, a, u);
1721}
1722
1723static __always_inline bool
1724atomic_long_add_unless(atomic_long_t *v, long a, long u)
1725{
1726 instrument_atomic_read_write(v, sizeof(*v));
1727 return arch_atomic_long_add_unless(v, a, u);
1728}
1729
1730static __always_inline bool
1731atomic_long_inc_not_zero(atomic_long_t *v)
1732{
1733 instrument_atomic_read_write(v, sizeof(*v));
1734 return arch_atomic_long_inc_not_zero(v);
1735}
1736
1737static __always_inline bool
1738atomic_long_inc_unless_negative(atomic_long_t *v)
1739{
1740 instrument_atomic_read_write(v, sizeof(*v));
1741 return arch_atomic_long_inc_unless_negative(v);
1742}
1743
1744static __always_inline bool
1745atomic_long_dec_unless_positive(atomic_long_t *v)
1746{
1747 instrument_atomic_read_write(v, sizeof(*v));
1748 return arch_atomic_long_dec_unless_positive(v);
1749}
1750
1751static __always_inline long
1752atomic_long_dec_if_positive(atomic_long_t *v)
1753{
1754 instrument_atomic_read_write(v, sizeof(*v));
1755 return arch_atomic_long_dec_if_positive(v);
1756}
1757
1180#define xchg(ptr, ...) \1758#define xchg(ptr, ...) \
1181({ \1759({ \
1182 typeof(ptr) __ai_ptr = (ptr); \1760 typeof(ptr) __ai_ptr = (ptr); \
@@ -1334,4 +1912,4 @@ atomic64_dec_if_positive(atomic64_t *v) · 151 unmodified lines
1334})1912})
1335 1913
1336#endif /* _LINUX_ATOMIC_INSTRUMENTED_H */1914#endif /* _LINUX_ATOMIC_INSTRUMENTED_H */
1337// 5edd72f105b6f54b7e9492d794abee88e6912d291915// 2a9553f0a9d5619f19151092df5cabbbf16ce835
include/linux/atomic/atomic-long.h+329−329
@@ -24,991 +24,991 @@ typedef atomic_t atomic_long_t; · 23 unmodified lines
24#ifdef CONFIG_64BIT24#ifdef CONFIG_64BIT
25 25
26static __always_inline long26static __always_inline long
27atomic_long_read(const atomic_long_t *v)27arch_atomic_long_read(const atomic_long_t *v)
28{28{
29 return atomic64_read(v);29 return arch_atomic64_read(v);
30}30}
31 31
32static __always_inline long32static __always_inline long
33atomic_long_read_acquire(const atomic_long_t *v)33arch_atomic_long_read_acquire(const atomic_long_t *v)
34{34{
35 return atomic64_read_acquire(v);35 return arch_atomic64_read_acquire(v);
36}36}
37 37
38static __always_inline void38static __always_inline void
39atomic_long_set(atomic_long_t *v, long i)39arch_atomic_long_set(atomic_long_t *v, long i)
40{40{
41 atomic64_set(v, i);41 arch_atomic64_set(v, i);
42}42}
43 43
44static __always_inline void44static __always_inline void
45atomic_long_set_release(atomic_long_t *v, long i)45arch_atomic_long_set_release(atomic_long_t *v, long i)
46{46{
47 atomic64_set_release(v, i);47 arch_atomic64_set_release(v, i);
48}48}
49 49
50static __always_inline void50static __always_inline void
51atomic_long_add(long i, atomic_long_t *v)51arch_atomic_long_add(long i, atomic_long_t *v)
52{52{
53 atomic64_add(i, v);53 arch_atomic64_add(i, v);
54}54}
55 55
56static __always_inline long56static __always_inline long
57atomic_long_add_return(long i, atomic_long_t *v)57arch_atomic_long_add_return(long i, atomic_long_t *v)
58{58{
59 return atomic64_add_return(i, v);59 return arch_atomic64_add_return(i, v);
60}60}
61 61
62static __always_inline long62static __always_inline long
63atomic_long_add_return_acquire(long i, atomic_long_t *v)63arch_atomic_long_add_return_acquire(long i, atomic_long_t *v)
64{64{
65 return atomic64_add_return_acquire(i, v);65 return arch_atomic64_add_return_acquire(i, v);
66}66}
67 67
68static __always_inline long68static __always_inline long
69atomic_long_add_return_release(long i, atomic_long_t *v)69arch_atomic_long_add_return_release(long i, atomic_long_t *v)
70{70{
71 return atomic64_add_return_release(i, v);71 return arch_atomic64_add_return_release(i, v);
72}72}
73 73
74static __always_inline long74static __always_inline long
75atomic_long_add_return_relaxed(long i, atomic_long_t *v)75arch_atomic_long_add_return_relaxed(long i, atomic_long_t *v)
76{76{
77 return atomic64_add_return_relaxed(i, v);77 return arch_atomic64_add_return_relaxed(i, v);
78}78}
79 79
80static __always_inline long80static __always_inline long
81atomic_long_fetch_add(long i, atomic_long_t *v)81arch_atomic_long_fetch_add(long i, atomic_long_t *v)
82{82{
83 return atomic64_fetch_add(i, v);83 return arch_atomic64_fetch_add(i, v);
84}84}
85 85
86static __always_inline long86static __always_inline long
87atomic_long_fetch_add_acquire(long i, atomic_long_t *v)87arch_atomic_long_fetch_add_acquire(long i, atomic_long_t *v)
88{88{
89 return atomic64_fetch_add_acquire(i, v);89 return arch_atomic64_fetch_add_acquire(i, v);
90}90}
91 91
92static __always_inline long92static __always_inline long
93atomic_long_fetch_add_release(long i, atomic_long_t *v)93arch_atomic_long_fetch_add_release(long i, atomic_long_t *v)
94{94{
95 return atomic64_fetch_add_release(i, v);95 return arch_atomic64_fetch_add_release(i, v);
96}96}
97 97
98static __always_inline long98static __always_inline long
99atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)99arch_atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)
100{100{
101 return atomic64_fetch_add_relaxed(i, v);101 return arch_atomic64_fetch_add_relaxed(i, v);
102}102}
103 103
104static __always_inline void104static __always_inline void
105atomic_long_sub(long i, atomic_long_t *v)105arch_atomic_long_sub(long i, atomic_long_t *v)
106{106{
107 atomic64_sub(i, v);107 arch_atomic64_sub(i, v);
108}108}
109 109
110static __always_inline long110static __always_inline long
111atomic_long_sub_return(long i, atomic_long_t *v)111arch_atomic_long_sub_return(long i, atomic_long_t *v)
112{112{
113 return atomic64_sub_return(i, v);113 return arch_atomic64_sub_return(i, v);
114}114}
115 115
116static __always_inline long116static __always_inline long
117atomic_long_sub_return_acquire(long i, atomic_long_t *v)117arch_atomic_long_sub_return_acquire(long i, atomic_long_t *v)
118{118{
119 return atomic64_sub_return_acquire(i, v);119 return arch_atomic64_sub_return_acquire(i, v);
120}120}
121 121
122static __always_inline long122static __always_inline long
123atomic_long_sub_return_release(long i, atomic_long_t *v)123arch_atomic_long_sub_return_release(long i, atomic_long_t *v)
124{124{
125 return atomic64_sub_return_release(i, v);125 return arch_atomic64_sub_return_release(i, v);
126}126}
127 127
128static __always_inline long128static __always_inline long
129atomic_long_sub_return_relaxed(long i, atomic_long_t *v)129arch_atomic_long_sub_return_relaxed(long i, atomic_long_t *v)
130{130{
131 return atomic64_sub_return_relaxed(i, v);131 return arch_atomic64_sub_return_relaxed(i, v);
132}132}
133 133
134static __always_inline long134static __always_inline long
135atomic_long_fetch_sub(long i, atomic_long_t *v)135arch_atomic_long_fetch_sub(long i, atomic_long_t *v)
136{136{
137 return atomic64_fetch_sub(i, v);137 return arch_atomic64_fetch_sub(i, v);
138}138}
139 139
140static __always_inline long140static __always_inline long
141atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)141arch_atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)
142{142{
143 return atomic64_fetch_sub_acquire(i, v);143 return arch_atomic64_fetch_sub_acquire(i, v);
144}144}
145 145
146static __always_inline long146static __always_inline long
147atomic_long_fetch_sub_release(long i, atomic_long_t *v)147arch_atomic_long_fetch_sub_release(long i, atomic_long_t *v)
148{148{
149 return atomic64_fetch_sub_release(i, v);149 return arch_atomic64_fetch_sub_release(i, v);
150}150}
151 151
152static __always_inline long152static __always_inline long
153atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)153arch_atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)
154{154{
155 return atomic64_fetch_sub_relaxed(i, v);155 return arch_atomic64_fetch_sub_relaxed(i, v);
156}156}
157 157
158static __always_inline void158static __always_inline void
159atomic_long_inc(atomic_long_t *v)159arch_atomic_long_inc(atomic_long_t *v)
160{160{
161 atomic64_inc(v);161 arch_atomic64_inc(v);
162}162}
163 163
164static __always_inline long164static __always_inline long
165atomic_long_inc_return(atomic_long_t *v)165arch_atomic_long_inc_return(atomic_long_t *v)
166{166{
167 return atomic64_inc_return(v);167 return arch_atomic64_inc_return(v);
168}168}
169 169
170static __always_inline long170static __always_inline long
171atomic_long_inc_return_acquire(atomic_long_t *v)171arch_atomic_long_inc_return_acquire(atomic_long_t *v)
172{172{
173 return atomic64_inc_return_acquire(v);173 return arch_atomic64_inc_return_acquire(v);
174}174}
175 175
176static __always_inline long176static __always_inline long
177atomic_long_inc_return_release(atomic_long_t *v)177arch_atomic_long_inc_return_release(atomic_long_t *v)
178{178{
179 return atomic64_inc_return_release(v);179 return arch_atomic64_inc_return_release(v);
180}180}
181 181
182static __always_inline long182static __always_inline long
183atomic_long_inc_return_relaxed(atomic_long_t *v)183arch_atomic_long_inc_return_relaxed(atomic_long_t *v)
184{184{
185 return atomic64_inc_return_relaxed(v);185 return arch_atomic64_inc_return_relaxed(v);
186}186}
187 187
188static __always_inline long188static __always_inline long
189atomic_long_fetch_inc(atomic_long_t *v)189arch_atomic_long_fetch_inc(atomic_long_t *v)
190{190{
191 return atomic64_fetch_inc(v);191 return arch_atomic64_fetch_inc(v);
192}192}
193 193
194static __always_inline long194static __always_inline long
195atomic_long_fetch_inc_acquire(atomic_long_t *v)195arch_atomic_long_fetch_inc_acquire(atomic_long_t *v)
196{196{
197 return atomic64_fetch_inc_acquire(v);197 return arch_atomic64_fetch_inc_acquire(v);
198}198}
199 199
200static __always_inline long200static __always_inline long
201atomic_long_fetch_inc_release(atomic_long_t *v)201arch_atomic_long_fetch_inc_release(atomic_long_t *v)
202{202{
203 return atomic64_fetch_inc_release(v);203 return arch_atomic64_fetch_inc_release(v);
204}204}
205 205
206static __always_inline long206static __always_inline long
207atomic_long_fetch_inc_relaxed(atomic_long_t *v)207arch_atomic_long_fetch_inc_relaxed(atomic_long_t *v)
208{208{
209 return atomic64_fetch_inc_relaxed(v);209 return arch_atomic64_fetch_inc_relaxed(v);
210}210}
211 211
212static __always_inline void212static __always_inline void
213atomic_long_dec(atomic_long_t *v)213arch_atomic_long_dec(atomic_long_t *v)
214{214{
215 atomic64_dec(v);215 arch_atomic64_dec(v);
216}216}
217 217
218static __always_inline long218static __always_inline long
219atomic_long_dec_return(atomic_long_t *v)219arch_atomic_long_dec_return(atomic_long_t *v)
220{220{
221 return atomic64_dec_return(v);221 return arch_atomic64_dec_return(v);
222}222}
223 223
224static __always_inline long224static __always_inline long
225atomic_long_dec_return_acquire(atomic_long_t *v)225arch_atomic_long_dec_return_acquire(atomic_long_t *v)
226{226{
227 return atomic64_dec_return_acquire(v);227 return arch_atomic64_dec_return_acquire(v);
228}228}
229 229
230static __always_inline long230static __always_inline long
231atomic_long_dec_return_release(atomic_long_t *v)231arch_atomic_long_dec_return_release(atomic_long_t *v)
232{232{
233 return atomic64_dec_return_release(v);233 return arch_atomic64_dec_return_release(v);
234}234}
235 235
236static __always_inline long236static __always_inline long
237atomic_long_dec_return_relaxed(atomic_long_t *v)237arch_atomic_long_dec_return_relaxed(atomic_long_t *v)
238{238{
239 return atomic64_dec_return_relaxed(v);239 return arch_atomic64_dec_return_relaxed(v);
240}240}
241 241
242static __always_inline long242static __always_inline long
243atomic_long_fetch_dec(atomic_long_t *v)243arch_atomic_long_fetch_dec(atomic_long_t *v)
244{244{
245 return atomic64_fetch_dec(v);245 return arch_atomic64_fetch_dec(v);
246}246}
247 247
248static __always_inline long248static __always_inline long
249atomic_long_fetch_dec_acquire(atomic_long_t *v)249arch_atomic_long_fetch_dec_acquire(atomic_long_t *v)
250{250{
251 return atomic64_fetch_dec_acquire(v);251 return arch_atomic64_fetch_dec_acquire(v);
252}252}
253 253
254static __always_inline long254static __always_inline long
255atomic_long_fetch_dec_release(atomic_long_t *v)255arch_atomic_long_fetch_dec_release(atomic_long_t *v)
256{256{
257 return atomic64_fetch_dec_release(v);257 return arch_atomic64_fetch_dec_release(v);
258}258}
259 259
260static __always_inline long260static __always_inline long
261atomic_long_fetch_dec_relaxed(atomic_long_t *v)261arch_atomic_long_fetch_dec_relaxed(atomic_long_t *v)
262{262{
263 return atomic64_fetch_dec_relaxed(v);263 return arch_atomic64_fetch_dec_relaxed(v);
264}264}
265 265
266static __always_inline void266static __always_inline void
267atomic_long_and(long i, atomic_long_t *v)267arch_atomic_long_and(long i, atomic_long_t *v)
268{268{
269 atomic64_and(i, v);269 arch_atomic64_and(i, v);
270}270}
271 271
272static __always_inline long272static __always_inline long
273atomic_long_fetch_and(long i, atomic_long_t *v)273arch_atomic_long_fetch_and(long i, atomic_long_t *v)
274{274{
275 return atomic64_fetch_and(i, v);275 return arch_atomic64_fetch_and(i, v);
276}276}
277 277
278static __always_inline long278static __always_inline long
279atomic_long_fetch_and_acquire(long i, atomic_long_t *v)279arch_atomic_long_fetch_and_acquire(long i, atomic_long_t *v)
280{280{
281 return atomic64_fetch_and_acquire(i, v);281 return arch_atomic64_fetch_and_acquire(i, v);
282}282}
283 283
284static __always_inline long284static __always_inline long
285atomic_long_fetch_and_release(long i, atomic_long_t *v)285arch_atomic_long_fetch_and_release(long i, atomic_long_t *v)
286{286{
287 return atomic64_fetch_and_release(i, v);287 return arch_atomic64_fetch_and_release(i, v);
288}288}
289 289
290static __always_inline long290static __always_inline long
291atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)291arch_atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)
292{292{
293 return atomic64_fetch_and_relaxed(i, v);293 return arch_atomic64_fetch_and_relaxed(i, v);
294}294}
295 295
296static __always_inline void296static __always_inline void
297atomic_long_andnot(long i, atomic_long_t *v)297arch_atomic_long_andnot(long i, atomic_long_t *v)
298{298{
299 atomic64_andnot(i, v);299 arch_atomic64_andnot(i, v);
300}300}
301 301
302static __always_inline long302static __always_inline long
303atomic_long_fetch_andnot(long i, atomic_long_t *v)303arch_atomic_long_fetch_andnot(long i, atomic_long_t *v)
304{304{
305 return atomic64_fetch_andnot(i, v);305 return arch_atomic64_fetch_andnot(i, v);
306}306}
307 307
308static __always_inline long308static __always_inline long
309atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)309arch_atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)
310{310{
311 return atomic64_fetch_andnot_acquire(i, v);311 return arch_atomic64_fetch_andnot_acquire(i, v);
312}312}
313 313
314static __always_inline long314static __always_inline long
315atomic_long_fetch_andnot_release(long i, atomic_long_t *v)315arch_atomic_long_fetch_andnot_release(long i, atomic_long_t *v)
316{316{
317 return atomic64_fetch_andnot_release(i, v);317 return arch_atomic64_fetch_andnot_release(i, v);
318}318}
319 319
320static __always_inline long320static __always_inline long
321atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)321arch_atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)
322{322{
323 return atomic64_fetch_andnot_relaxed(i, v);323 return arch_atomic64_fetch_andnot_relaxed(i, v);
324}324}
325 325
326static __always_inline void326static __always_inline void
327atomic_long_or(long i, atomic_long_t *v)327arch_atomic_long_or(long i, atomic_long_t *v)
328{328{
329 atomic64_or(i, v);329 arch_atomic64_or(i, v);
330}330}
331 331
332static __always_inline long332static __always_inline long
333atomic_long_fetch_or(long i, atomic_long_t *v)333arch_atomic_long_fetch_or(long i, atomic_long_t *v)
334{334{
335 return atomic64_fetch_or(i, v);335 return arch_atomic64_fetch_or(i, v);
336}336}
337 337
338static __always_inline long338static __always_inline long
339atomic_long_fetch_or_acquire(long i, atomic_long_t *v)339arch_atomic_long_fetch_or_acquire(long i, atomic_long_t *v)
340{340{
341 return atomic64_fetch_or_acquire(i, v);341 return arch_atomic64_fetch_or_acquire(i, v);
342}342}
343 343
344static __always_inline long344static __always_inline long
345atomic_long_fetch_or_release(long i, atomic_long_t *v)345arch_atomic_long_fetch_or_release(long i, atomic_long_t *v)
346{346{
347 return atomic64_fetch_or_release(i, v);347 return arch_atomic64_fetch_or_release(i, v);
348}348}
349 349
350static __always_inline long350static __always_inline long
351atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)351arch_atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)
352{352{
353 return atomic64_fetch_or_relaxed(i, v);353 return arch_atomic64_fetch_or_relaxed(i, v);
354}354}
355 355
356static __always_inline void356static __always_inline void
357atomic_long_xor(long i, atomic_long_t *v)357arch_atomic_long_xor(long i, atomic_long_t *v)
358{358{
359 atomic64_xor(i, v);359 arch_atomic64_xor(i, v);
360}360}
361 361
362static __always_inline long362static __always_inline long
363atomic_long_fetch_xor(long i, atomic_long_t *v)363arch_atomic_long_fetch_xor(long i, atomic_long_t *v)
364{364{
365 return atomic64_fetch_xor(i, v);365 return arch_atomic64_fetch_xor(i, v);
366}366}
367 367
368static __always_inline long368static __always_inline long
369atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)369arch_atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)
370{370{
371 return atomic64_fetch_xor_acquire(i, v);371 return arch_atomic64_fetch_xor_acquire(i, v);
372}372}
373 373
374static __always_inline long374static __always_inline long
375atomic_long_fetch_xor_release(long i, atomic_long_t *v)375arch_atomic_long_fetch_xor_release(long i, atomic_long_t *v)
376{376{
377 return atomic64_fetch_xor_release(i, v);377 return arch_atomic64_fetch_xor_release(i, v);
378}378}
379 379
380static __always_inline long380static __always_inline long
381atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)381arch_atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)
382{382{
383 return atomic64_fetch_xor_relaxed(i, v);383 return arch_atomic64_fetch_xor_relaxed(i, v);
384}384}
385 385
386static __always_inline long386static __always_inline long
387atomic_long_xchg(atomic_long_t *v, long i)387arch_atomic_long_xchg(atomic_long_t *v, long i)
388{388{
389 return atomic64_xchg(v, i);389 return arch_atomic64_xchg(v, i);
390}390}
391 391
392static __always_inline long392static __always_inline long
393atomic_long_xchg_acquire(atomic_long_t *v, long i)393arch_atomic_long_xchg_acquire(atomic_long_t *v, long i)
394{394{
395 return atomic64_xchg_acquire(v, i);395 return arch_atomic64_xchg_acquire(v, i);
396}396}
397 397
398static __always_inline long398static __always_inline long
399atomic_long_xchg_release(atomic_long_t *v, long i)399arch_atomic_long_xchg_release(atomic_long_t *v, long i)
400{400{
401 return atomic64_xchg_release(v, i);401 return arch_atomic64_xchg_release(v, i);
402}402}
403 403
404static __always_inline long404static __always_inline long
405atomic_long_xchg_relaxed(atomic_long_t *v, long i)405arch_atomic_long_xchg_relaxed(atomic_long_t *v, long i)
406{406{
407 return atomic64_xchg_relaxed(v, i);407 return arch_atomic64_xchg_relaxed(v, i);
408}408}
409 409
410static __always_inline long410static __always_inline long
411atomic_long_cmpxchg(atomic_long_t *v, long old, long new)411arch_atomic_long_cmpxchg(atomic_long_t *v, long old, long new)
412{412{
413 return atomic64_cmpxchg(v, old, new);413 return arch_atomic64_cmpxchg(v, old, new);
414}414}
415 415
416static __always_inline long416static __always_inline long
417atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)417arch_atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)
418{418{
419 return atomic64_cmpxchg_acquire(v, old, new);419 return arch_atomic64_cmpxchg_acquire(v, old, new);
420}420}
421 421
422static __always_inline long422static __always_inline long
423atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)423arch_atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)
424{424{
425 return atomic64_cmpxchg_release(v, old, new);425 return arch_atomic64_cmpxchg_release(v, old, new);
426}426}
427 427
428static __always_inline long428static __always_inline long
429atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)429arch_atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)
430{430{
431 return atomic64_cmpxchg_relaxed(v, old, new);431 return arch_atomic64_cmpxchg_relaxed(v, old, new);
432}432}
433 433
434static __always_inline bool434static __always_inline bool
435atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)435arch_atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)
436{436{
437 return atomic64_try_cmpxchg(v, (s64 *)old, new);437 return arch_atomic64_try_cmpxchg(v, (s64 *)old, new);
438}438}
439 439
440static __always_inline bool440static __always_inline bool
441atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)441arch_atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)
442{442{
443 return atomic64_try_cmpxchg_acquire(v, (s64 *)old, new);443 return arch_atomic64_try_cmpxchg_acquire(v, (s64 *)old, new);
444}444}
445 445
446static __always_inline bool446static __always_inline bool
447atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)447arch_atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)
448{448{
449 return atomic64_try_cmpxchg_release(v, (s64 *)old, new);449 return arch_atomic64_try_cmpxchg_release(v, (s64 *)old, new);
450}450}
451 451
452static __always_inline bool452static __always_inline bool
453atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)453arch_atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)
454{454{
455 return atomic64_try_cmpxchg_relaxed(v, (s64 *)old, new);455 return arch_atomic64_try_cmpxchg_relaxed(v, (s64 *)old, new);
456}456}
457 457
458static __always_inline bool458static __always_inline bool
459atomic_long_sub_and_test(long i, atomic_long_t *v)459arch_atomic_long_sub_and_test(long i, atomic_long_t *v)
460{460{
461 return atomic64_sub_and_test(i, v);461 return arch_atomic64_sub_and_test(i, v);
462}462}
463 463
464static __always_inline bool464static __always_inline bool
465atomic_long_dec_and_test(atomic_long_t *v)465arch_atomic_long_dec_and_test(atomic_long_t *v)
466{466{
467 return atomic64_dec_and_test(v);467 return arch_atomic64_dec_and_test(v);
468}468}
469 469
470static __always_inline bool470static __always_inline bool
471atomic_long_inc_and_test(atomic_long_t *v)471arch_atomic_long_inc_and_test(atomic_long_t *v)
472{472{
473 return atomic64_inc_and_test(v);473 return arch_atomic64_inc_and_test(v);
474}474}
475 475
476static __always_inline bool476static __always_inline bool
477atomic_long_add_negative(long i, atomic_long_t *v)477arch_atomic_long_add_negative(long i, atomic_long_t *v)
478{478{
479 return atomic64_add_negative(i, v);479 return arch_atomic64_add_negative(i, v);
480}480}
481 481
482static __always_inline long482static __always_inline long
483atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)483arch_atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)
484{484{
485 return atomic64_fetch_add_unless(v, a, u);485 return arch_atomic64_fetch_add_unless(v, a, u);
486}486}
487 487
488static __always_inline bool488static __always_inline bool
489atomic_long_add_unless(atomic_long_t *v, long a, long u)489arch_atomic_long_add_unless(atomic_long_t *v, long a, long u)
490{490{
491 return atomic64_add_unless(v, a, u);491 return arch_atomic64_add_unless(v, a, u);
492}492}
493 493
494static __always_inline bool494static __always_inline bool
495atomic_long_inc_not_zero(atomic_long_t *v)495arch_atomic_long_inc_not_zero(atomic_long_t *v)
496{496{
497 return atomic64_inc_not_zero(v);497 return arch_atomic64_inc_not_zero(v);
498}498}
499 499
500static __always_inline bool500static __always_inline bool
501atomic_long_inc_unless_negative(atomic_long_t *v)501arch_atomic_long_inc_unless_negative(atomic_long_t *v)
502{502{
503 return atomic64_inc_unless_negative(v);503 return arch_atomic64_inc_unless_negative(v);
504}504}
505 505
506static __always_inline bool506static __always_inline bool
507atomic_long_dec_unless_positive(atomic_long_t *v)507arch_atomic_long_dec_unless_positive(atomic_long_t *v)
508{508{
509 return atomic64_dec_unless_positive(v);509 return arch_atomic64_dec_unless_positive(v);
510}510}
511 511
512static __always_inline long512static __always_inline long
513atomic_long_dec_if_positive(atomic_long_t *v)513arch_atomic_long_dec_if_positive(atomic_long_t *v)
514{514{
515 return atomic64_dec_if_positive(v);515 return arch_atomic64_dec_if_positive(v);
516}516}
517 517
518#else /* CONFIG_64BIT */518#else /* CONFIG_64BIT */
519 519
520static __always_inline long520static __always_inline long
521atomic_long_read(const atomic_long_t *v)521arch_atomic_long_read(const atomic_long_t *v)
522{522{
523 return atomic_read(v);523 return arch_atomic_read(v);
524}524}
525 525
526static __always_inline long526static __always_inline long
527atomic_long_read_acquire(const atomic_long_t *v)527arch_atomic_long_read_acquire(const atomic_long_t *v)
528{528{
529 return atomic_read_acquire(v);529 return arch_atomic_read_acquire(v);
530}530}
531 531
532static __always_inline void532static __always_inline void
533atomic_long_set(atomic_long_t *v, long i)533arch_atomic_long_set(atomic_long_t *v, long i)
534{534{
535 atomic_set(v, i);535 arch_atomic_set(v, i);
536}536}
537 537
538static __always_inline void538static __always_inline void
539atomic_long_set_release(atomic_long_t *v, long i)539arch_atomic_long_set_release(atomic_long_t *v, long i)
540{540{
541 atomic_set_release(v, i);541 arch_atomic_set_release(v, i);
542}542}
543 543
544static __always_inline void544static __always_inline void
545atomic_long_add(long i, atomic_long_t *v)545arch_atomic_long_add(long i, atomic_long_t *v)
546{546{
547 atomic_add(i, v);547 arch_atomic_add(i, v);
548}548}
549 549
550static __always_inline long550static __always_inline long
551atomic_long_add_return(long i, atomic_long_t *v)551arch_atomic_long_add_return(long i, atomic_long_t *v)
552{552{
553 return atomic_add_return(i, v);553 return arch_atomic_add_return(i, v);
554}554}
555 555
556static __always_inline long556static __always_inline long
557atomic_long_add_return_acquire(long i, atomic_long_t *v)557arch_atomic_long_add_return_acquire(long i, atomic_long_t *v)
558{558{
559 return atomic_add_return_acquire(i, v);559 return arch_atomic_add_return_acquire(i, v);
560}560}
561 561
562static __always_inline long562static __always_inline long
563atomic_long_add_return_release(long i, atomic_long_t *v)563arch_atomic_long_add_return_release(long i, atomic_long_t *v)
564{564{
565 return atomic_add_return_release(i, v);565 return arch_atomic_add_return_release(i, v);
566}566}
567 567
568static __always_inline long568static __always_inline long
569atomic_long_add_return_relaxed(long i, atomic_long_t *v)569arch_atomic_long_add_return_relaxed(long i, atomic_long_t *v)
570{570{
571 return atomic_add_return_relaxed(i, v);571 return arch_atomic_add_return_relaxed(i, v);
572}572}
573 573
574static __always_inline long574static __always_inline long
575atomic_long_fetch_add(long i, atomic_long_t *v)575arch_atomic_long_fetch_add(long i, atomic_long_t *v)
576{576{
577 return atomic_fetch_add(i, v);577 return arch_atomic_fetch_add(i, v);
578}578}
579 579
580static __always_inline long580static __always_inline long
581atomic_long_fetch_add_acquire(long i, atomic_long_t *v)581arch_atomic_long_fetch_add_acquire(long i, atomic_long_t *v)
582{582{
583 return atomic_fetch_add_acquire(i, v);583 return arch_atomic_fetch_add_acquire(i, v);
584}584}
585 585
586static __always_inline long586static __always_inline long
587atomic_long_fetch_add_release(long i, atomic_long_t *v)587arch_atomic_long_fetch_add_release(long i, atomic_long_t *v)
588{588{
589 return atomic_fetch_add_release(i, v);589 return arch_atomic_fetch_add_release(i, v);
590}590}
591 591
592static __always_inline long592static __always_inline long
593atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)593arch_atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)
594{594{
595 return atomic_fetch_add_relaxed(i, v);595 return arch_atomic_fetch_add_relaxed(i, v);
596}596}
597 597
598static __always_inline void598static __always_inline void
599atomic_long_sub(long i, atomic_long_t *v)599arch_atomic_long_sub(long i, atomic_long_t *v)
600{600{
601 atomic_sub(i, v);601 arch_atomic_sub(i, v);
602}602}
603 603
604static __always_inline long604static __always_inline long
605atomic_long_sub_return(long i, atomic_long_t *v)605arch_atomic_long_sub_return(long i, atomic_long_t *v)
606{606{
607 return atomic_sub_return(i, v);607 return arch_atomic_sub_return(i, v);
608}608}
609 609
610static __always_inline long610static __always_inline long
611atomic_long_sub_return_acquire(long i, atomic_long_t *v)611arch_atomic_long_sub_return_acquire(long i, atomic_long_t *v)
612{612{
613 return atomic_sub_return_acquire(i, v);613 return arch_atomic_sub_return_acquire(i, v);
614}614}
615 615
616static __always_inline long616static __always_inline long
617atomic_long_sub_return_release(long i, atomic_long_t *v)617arch_atomic_long_sub_return_release(long i, atomic_long_t *v)
618{618{
619 return atomic_sub_return_release(i, v);619 return arch_atomic_sub_return_release(i, v);
620}620}
621 621
622static __always_inline long622static __always_inline long
623atomic_long_sub_return_relaxed(long i, atomic_long_t *v)623arch_atomic_long_sub_return_relaxed(long i, atomic_long_t *v)
624{624{
625 return atomic_sub_return_relaxed(i, v);625 return arch_atomic_sub_return_relaxed(i, v);
626}626}
627 627
628static __always_inline long628static __always_inline long
629atomic_long_fetch_sub(long i, atomic_long_t *v)629arch_atomic_long_fetch_sub(long i, atomic_long_t *v)
630{630{
631 return atomic_fetch_sub(i, v);631 return arch_atomic_fetch_sub(i, v);
632}632}
633 633
634static __always_inline long634static __always_inline long
635atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)635arch_atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)
636{636{
637 return atomic_fetch_sub_acquire(i, v);637 return arch_atomic_fetch_sub_acquire(i, v);
638}638}
639 639
640static __always_inline long640static __always_inline long
641atomic_long_fetch_sub_release(long i, atomic_long_t *v)641arch_atomic_long_fetch_sub_release(long i, atomic_long_t *v)
642{642{
643 return atomic_fetch_sub_release(i, v);643 return arch_atomic_fetch_sub_release(i, v);
644}644}
645 645
646static __always_inline long646static __always_inline long
647atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)647arch_atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)
648{648{
649 return atomic_fetch_sub_relaxed(i, v);649 return arch_atomic_fetch_sub_relaxed(i, v);
650}650}
651 651
652static __always_inline void652static __always_inline void
653atomic_long_inc(atomic_long_t *v)653arch_atomic_long_inc(atomic_long_t *v)
654{654{
655 atomic_inc(v);655 arch_atomic_inc(v);
656}656}
657 657
658static __always_inline long658static __always_inline long
659atomic_long_inc_return(atomic_long_t *v)659arch_atomic_long_inc_return(atomic_long_t *v)
660{660{
661 return atomic_inc_return(v);661 return arch_atomic_inc_return(v);
662}662}
663 663
664static __always_inline long664static __always_inline long
665atomic_long_inc_return_acquire(atomic_long_t *v)665arch_atomic_long_inc_return_acquire(atomic_long_t *v)
666{666{
667 return atomic_inc_return_acquire(v);667 return arch_atomic_inc_return_acquire(v);
668}668}
669 669
670static __always_inline long670static __always_inline long
671atomic_long_inc_return_release(atomic_long_t *v)671arch_atomic_long_inc_return_release(atomic_long_t *v)
672{672{
673 return atomic_inc_return_release(v);673 return arch_atomic_inc_return_release(v);
674}674}
675 675
676static __always_inline long676static __always_inline long
677atomic_long_inc_return_relaxed(atomic_long_t *v)677arch_atomic_long_inc_return_relaxed(atomic_long_t *v)
678{678{
679 return atomic_inc_return_relaxed(v);679 return arch_atomic_inc_return_relaxed(v);
680}680}
681 681
682static __always_inline long682static __always_inline long
683atomic_long_fetch_inc(atomic_long_t *v)683arch_atomic_long_fetch_inc(atomic_long_t *v)
684{684{
685 return atomic_fetch_inc(v);685 return arch_atomic_fetch_inc(v);
686}686}
687 687
688static __always_inline long688static __always_inline long
689atomic_long_fetch_inc_acquire(atomic_long_t *v)689arch_atomic_long_fetch_inc_acquire(atomic_long_t *v)
690{690{
691 return atomic_fetch_inc_acquire(v);691 return arch_atomic_fetch_inc_acquire(v);
692}692}
693 693
694static __always_inline long694static __always_inline long
695atomic_long_fetch_inc_release(atomic_long_t *v)695arch_atomic_long_fetch_inc_release(atomic_long_t *v)
696{696{
697 return atomic_fetch_inc_release(v);697 return arch_atomic_fetch_inc_release(v);
698}698}
699 699
700static __always_inline long700static __always_inline long
701atomic_long_fetch_inc_relaxed(atomic_long_t *v)701arch_atomic_long_fetch_inc_relaxed(atomic_long_t *v)
702{702{
703 return atomic_fetch_inc_relaxed(v);703 return arch_atomic_fetch_inc_relaxed(v);
704}704}
705 705
706static __always_inline void706static __always_inline void
707atomic_long_dec(atomic_long_t *v)707arch_atomic_long_dec(atomic_long_t *v)
708{708{
709 atomic_dec(v);709 arch_atomic_dec(v);
710}710}
711 711
712static __always_inline long712static __always_inline long
713atomic_long_dec_return(atomic_long_t *v)713arch_atomic_long_dec_return(atomic_long_t *v)
714{714{
715 return atomic_dec_return(v);715 return arch_atomic_dec_return(v);
716}716}
717 717
718static __always_inline long718static __always_inline long
719atomic_long_dec_return_acquire(atomic_long_t *v)719arch_atomic_long_dec_return_acquire(atomic_long_t *v)
720{720{
721 return atomic_dec_return_acquire(v);721 return arch_atomic_dec_return_acquire(v);
722}722}
723 723
724static __always_inline long724static __always_inline long
725atomic_long_dec_return_release(atomic_long_t *v)725arch_atomic_long_dec_return_release(atomic_long_t *v)
726{726{
727 return atomic_dec_return_release(v);727 return arch_atomic_dec_return_release(v);
728}728}
729 729
730static __always_inline long730static __always_inline long
731atomic_long_dec_return_relaxed(atomic_long_t *v)731arch_atomic_long_dec_return_relaxed(atomic_long_t *v)
732{732{
733 return atomic_dec_return_relaxed(v);733 return arch_atomic_dec_return_relaxed(v);
734}734}
735 735
736static __always_inline long736static __always_inline long
737atomic_long_fetch_dec(atomic_long_t *v)737arch_atomic_long_fetch_dec(atomic_long_t *v)
738{738{
739 return atomic_fetch_dec(v);739 return arch_atomic_fetch_dec(v);
740}740}
741 741
742static __always_inline long742static __always_inline long
743atomic_long_fetch_dec_acquire(atomic_long_t *v)743arch_atomic_long_fetch_dec_acquire(atomic_long_t *v)
744{744{
745 return atomic_fetch_dec_acquire(v);745 return arch_atomic_fetch_dec_acquire(v);
746}746}
747 747
748static __always_inline long748static __always_inline long
749atomic_long_fetch_dec_release(atomic_long_t *v)749arch_atomic_long_fetch_dec_release(atomic_long_t *v)
750{750{
751 return atomic_fetch_dec_release(v);751 return arch_atomic_fetch_dec_release(v);
752}752}
753 753
754static __always_inline long754static __always_inline long
755atomic_long_fetch_dec_relaxed(atomic_long_t *v)755arch_atomic_long_fetch_dec_relaxed(atomic_long_t *v)
756{756{
757 return atomic_fetch_dec_relaxed(v);757 return arch_atomic_fetch_dec_relaxed(v);
758}758}
759 759
760static __always_inline void760static __always_inline void
761atomic_long_and(long i, atomic_long_t *v)761arch_atomic_long_and(long i, atomic_long_t *v)
762{762{
763 atomic_and(i, v);763 arch_atomic_and(i, v);
764}764}
765 765
766static __always_inline long766static __always_inline long
767atomic_long_fetch_and(long i, atomic_long_t *v)767arch_atomic_long_fetch_and(long i, atomic_long_t *v)
768{768{
769 return atomic_fetch_and(i, v);769 return arch_atomic_fetch_and(i, v);
770}770}
771 771
772static __always_inline long772static __always_inline long
773atomic_long_fetch_and_acquire(long i, atomic_long_t *v)773arch_atomic_long_fetch_and_acquire(long i, atomic_long_t *v)
774{774{
775 return atomic_fetch_and_acquire(i, v);775 return arch_atomic_fetch_and_acquire(i, v);
776}776}
777 777
778static __always_inline long778static __always_inline long
779atomic_long_fetch_and_release(long i, atomic_long_t *v)779arch_atomic_long_fetch_and_release(long i, atomic_long_t *v)
780{780{
781 return atomic_fetch_and_release(i, v);781 return arch_atomic_fetch_and_release(i, v);
782}782}
783 783
784static __always_inline long784static __always_inline long
785atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)785arch_atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)
786{786{
787 return atomic_fetch_and_relaxed(i, v);787 return arch_atomic_fetch_and_relaxed(i, v);
788}788}
789 789
790static __always_inline void790static __always_inline void
791atomic_long_andnot(long i, atomic_long_t *v)791arch_atomic_long_andnot(long i, atomic_long_t *v)
792{792{
793 atomic_andnot(i, v);793 arch_atomic_andnot(i, v);
794}794}
795 795
796static __always_inline long796static __always_inline long
797atomic_long_fetch_andnot(long i, atomic_long_t *v)797arch_atomic_long_fetch_andnot(long i, atomic_long_t *v)
798{798{
799 return atomic_fetch_andnot(i, v);799 return arch_atomic_fetch_andnot(i, v);
800}800}
801 801
802static __always_inline long802static __always_inline long
803atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)803arch_atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)
804{804{
805 return atomic_fetch_andnot_acquire(i, v);805 return arch_atomic_fetch_andnot_acquire(i, v);
806}806}
807 807
808static __always_inline long808static __always_inline long
809atomic_long_fetch_andnot_release(long i, atomic_long_t *v)809arch_atomic_long_fetch_andnot_release(long i, atomic_long_t *v)
810{810{
811 return atomic_fetch_andnot_release(i, v);811 return arch_atomic_fetch_andnot_release(i, v);
812}812}
813 813
814static __always_inline long814static __always_inline long
815atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)815arch_atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)
816{816{
817 return atomic_fetch_andnot_relaxed(i, v);817 return arch_atomic_fetch_andnot_relaxed(i, v);
818}818}
819 819
820static __always_inline void820static __always_inline void
821atomic_long_or(long i, atomic_long_t *v)821arch_atomic_long_or(long i, atomic_long_t *v)
822{822{
823 atomic_or(i, v);823 arch_atomic_or(i, v);
824}824}
825 825
826static __always_inline long826static __always_inline long
827atomic_long_fetch_or(long i, atomic_long_t *v)827arch_atomic_long_fetch_or(long i, atomic_long_t *v)
828{828{
829 return atomic_fetch_or(i, v);829 return arch_atomic_fetch_or(i, v);
830}830}
831 831
832static __always_inline long832static __always_inline long
833atomic_long_fetch_or_acquire(long i, atomic_long_t *v)833arch_atomic_long_fetch_or_acquire(long i, atomic_long_t *v)
834{834{
835 return atomic_fetch_or_acquire(i, v);835 return arch_atomic_fetch_or_acquire(i, v);
836}836}
837 837
838static __always_inline long838static __always_inline long
839atomic_long_fetch_or_release(long i, atomic_long_t *v)839arch_atomic_long_fetch_or_release(long i, atomic_long_t *v)
840{840{
841 return atomic_fetch_or_release(i, v);841 return arch_atomic_fetch_or_release(i, v);
842}842}
843 843
844static __always_inline long844static __always_inline long
845atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)845arch_atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)
846{846{
847 return atomic_fetch_or_relaxed(i, v);847 return arch_atomic_fetch_or_relaxed(i, v);
848}848}
849 849
850static __always_inline void850static __always_inline void
851atomic_long_xor(long i, atomic_long_t *v)851arch_atomic_long_xor(long i, atomic_long_t *v)
852{852{
853 atomic_xor(i, v);853 arch_atomic_xor(i, v);
854}854}
855 855
856static __always_inline long856static __always_inline long
857atomic_long_fetch_xor(long i, atomic_long_t *v)857arch_atomic_long_fetch_xor(long i, atomic_long_t *v)
858{858{
859 return atomic_fetch_xor(i, v);859 return arch_atomic_fetch_xor(i, v);
860}860}
861 861
862static __always_inline long862static __always_inline long
863atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)863arch_atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)
864{864{
865 return atomic_fetch_xor_acquire(i, v);865 return arch_atomic_fetch_xor_acquire(i, v);
866}866}
867 867
868static __always_inline long868static __always_inline long
869atomic_long_fetch_xor_release(long i, atomic_long_t *v)869arch_atomic_long_fetch_xor_release(long i, atomic_long_t *v)
870{870{
871 return atomic_fetch_xor_release(i, v);871 return arch_atomic_fetch_xor_release(i, v);
872}872}
873 873
874static __always_inline long874static __always_inline long
875atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)875arch_atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)
876{876{
877 return atomic_fetch_xor_relaxed(i, v);877 return arch_atomic_fetch_xor_relaxed(i, v);
878}878}
879 879
880static __always_inline long880static __always_inline long
881atomic_long_xchg(atomic_long_t *v, long i)881arch_atomic_long_xchg(atomic_long_t *v, long i)
882{882{
883 return atomic_xchg(v, i);883 return arch_atomic_xchg(v, i);
884}884}
885 885
886static __always_inline long886static __always_inline long
887atomic_long_xchg_acquire(atomic_long_t *v, long i)887arch_atomic_long_xchg_acquire(atomic_long_t *v, long i)
888{888{
889 return atomic_xchg_acquire(v, i);889 return arch_atomic_xchg_acquire(v, i);
890}890}
891 891
892static __always_inline long892static __always_inline long
893atomic_long_xchg_release(atomic_long_t *v, long i)893arch_atomic_long_xchg_release(atomic_long_t *v, long i)
894{894{
895 return atomic_xchg_release(v, i);895 return arch_atomic_xchg_release(v, i);
896}896}
897 897
898static __always_inline long898static __always_inline long
899atomic_long_xchg_relaxed(atomic_long_t *v, long i)899arch_atomic_long_xchg_relaxed(atomic_long_t *v, long i)
900{900{
901 return atomic_xchg_relaxed(v, i);901 return arch_atomic_xchg_relaxed(v, i);
902}902}
903 903
904static __always_inline long904static __always_inline long
905atomic_long_cmpxchg(atomic_long_t *v, long old, long new)905arch_atomic_long_cmpxchg(atomic_long_t *v, long old, long new)
906{906{
907 return atomic_cmpxchg(v, old, new);907 return arch_atomic_cmpxchg(v, old, new);
908}908}
909 909
910static __always_inline long910static __always_inline long
911atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)911arch_atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)
912{912{
913 return atomic_cmpxchg_acquire(v, old, new);913 return arch_atomic_cmpxchg_acquire(v, old, new);
914}914}
915 915
916static __always_inline long916static __always_inline long
917atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)917arch_atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)
918{918{
919 return atomic_cmpxchg_release(v, old, new);919 return arch_atomic_cmpxchg_release(v, old, new);
920}920}
921 921
922static __always_inline long922static __always_inline long
923atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)923arch_atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)
924{924{
925 return atomic_cmpxchg_relaxed(v, old, new);925 return arch_atomic_cmpxchg_relaxed(v, old, new);
926}926}
927 927
928static __always_inline bool928static __always_inline bool
929atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)929arch_atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)
930{930{
931 return atomic_try_cmpxchg(v, (int *)old, new);931 return arch_atomic_try_cmpxchg(v, (int *)old, new);
932}932}
933 933
934static __always_inline bool934static __always_inline bool
935atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)935arch_atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)
936{936{
937 return atomic_try_cmpxchg_acquire(v, (int *)old, new);937 return arch_atomic_try_cmpxchg_acquire(v, (int *)old, new);
938}938}
939 939
940static __always_inline bool940static __always_inline bool
941atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)941arch_atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)
942{942{
943 return atomic_try_cmpxchg_release(v, (int *)old, new);943 return arch_atomic_try_cmpxchg_release(v, (int *)old, new);
944}944}
945 945
946static __always_inline bool946static __always_inline bool
947atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)947arch_atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)
948{948{
949 return atomic_try_cmpxchg_relaxed(v, (int *)old, new);949 return arch_atomic_try_cmpxchg_relaxed(v, (int *)old, new);
950}950}
951 951
952static __always_inline bool952static __always_inline bool
953atomic_long_sub_and_test(long i, atomic_long_t *v)953arch_atomic_long_sub_and_test(long i, atomic_long_t *v)
954{954{
955 return atomic_sub_and_test(i, v);955 return arch_atomic_sub_and_test(i, v);
956}956}
957 957
958static __always_inline bool958static __always_inline bool
959atomic_long_dec_and_test(atomic_long_t *v)959arch_atomic_long_dec_and_test(atomic_long_t *v)
960{960{
961 return atomic_dec_and_test(v);961 return arch_atomic_dec_and_test(v);
962}962}
963 963
964static __always_inline bool964static __always_inline bool
965atomic_long_inc_and_test(atomic_long_t *v)965arch_atomic_long_inc_and_test(atomic_long_t *v)
966{966{
967 return atomic_inc_and_test(v);967 return arch_atomic_inc_and_test(v);
968}968}
969 969
970static __always_inline bool970static __always_inline bool
971atomic_long_add_negative(long i, atomic_long_t *v)971arch_atomic_long_add_negative(long i, atomic_long_t *v)
972{972{
973 return atomic_add_negative(i, v);973 return arch_atomic_add_negative(i, v);
974}974}
975 975
976static __always_inline long976static __always_inline long
977atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)977arch_atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)
978{978{
979 return atomic_fetch_add_unless(v, a, u);979 return arch_atomic_fetch_add_unless(v, a, u);
980}980}
981 981
982static __always_inline bool982static __always_inline bool
983atomic_long_add_unless(atomic_long_t *v, long a, long u)983arch_atomic_long_add_unless(atomic_long_t *v, long a, long u)
984{984{
985 return atomic_add_unless(v, a, u);985 return arch_atomic_add_unless(v, a, u);
986}986}
987 987
988static __always_inline bool988static __always_inline bool
989atomic_long_inc_not_zero(atomic_long_t *v)989arch_atomic_long_inc_not_zero(atomic_long_t *v)
990{990{
991 return atomic_inc_not_zero(v);991 return arch_atomic_inc_not_zero(v);
992}992}
993 993
994static __always_inline bool994static __always_inline bool
995atomic_long_inc_unless_negative(atomic_long_t *v)995arch_atomic_long_inc_unless_negative(atomic_long_t *v)
996{996{
997 return atomic_inc_unless_negative(v);997 return arch_atomic_inc_unless_negative(v);
998}998}
999 999
1000static __always_inline bool1000static __always_inline bool
1001atomic_long_dec_unless_positive(atomic_long_t *v)1001arch_atomic_long_dec_unless_positive(atomic_long_t *v)
1002{1002{
1003 return atomic_dec_unless_positive(v);1003 return arch_atomic_dec_unless_positive(v);
1004}1004}
1005 1005
1006static __always_inline long1006static __always_inline long
1007atomic_long_dec_if_positive(atomic_long_t *v)1007arch_atomic_long_dec_if_positive(atomic_long_t *v)
1008{1008{
1009 return atomic_dec_if_positive(v);1009 return arch_atomic_dec_if_positive(v);
1010}1010}
1011 1011
1012#endif /* CONFIG_64BIT */1012#endif /* CONFIG_64BIT */
1013#endif /* _LINUX_ATOMIC_LONG_H */1013#endif /* _LINUX_ATOMIC_LONG_H */
1014// c5552b5d78a0c7584dfd03cba985e78a1a86bbed1014// e8f0e08ff072b74d180eabe2ad001282b38c2c88
scripts/atomic/gen-atomic-instrumented.sh+5−0
@@ -138,6 +138,11 @@ grep '^[a-z]' "$1" | while read name meta args; do · 137 unmodified lines
138 gen_proto "${meta}" "${name}" "atomic64" "s64" ${args}138 gen_proto "${meta}" "${name}" "atomic64" "s64" ${args}
139done139done
140 140
141grep '^[a-z]' "$1" | while read name meta args; do
142 gen_proto "${meta}" "${name}" "atomic_long" "long" ${args}
143done
144
145
141for xchg in "xchg" "cmpxchg" "cmpxchg64" "try_cmpxchg"; do146for xchg in "xchg" "cmpxchg" "cmpxchg64" "try_cmpxchg"; do
142 for order in "" "_acquire" "_release" "_relaxed"; do147 for order in "" "_acquire" "_release" "_relaxed"; do
143 gen_xchg "${xchg}${order}" ""148 gen_xchg "${xchg}${order}" ""
scripts/atomic/gen-atomic-long.sh+2−2
@@ -47,9 +47,9 @@ gen_proto_order_variant() · 46 unmodified lines
47 47
48cat <<EOF48cat <<EOF
49static __always_inline ${ret}49static __always_inline ${ret}
50atomic_long_${name}(${params})50arch_atomic_long_${name}(${params})
51{51{
52 ${retstmt}${atomic}_${name}(${argscast});52 ${retstmt}arch_${atomic}_${name}(${argscast});
53}53}
54 54
55EOF55EOF

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t