Lines Matching full:v
433 * @v: pointer to atomic_t
435 * Atomically loads the value of @v with relaxed ordering.
439 * Return: The value loaded from @v.
442 raw_atomic_read(const atomic_t *v) in raw_atomic_read() argument
444 return arch_atomic_read(v); in raw_atomic_read()
449 * @v: pointer to atomic_t
451 * Atomically loads the value of @v with acquire ordering.
455 * Return: The value loaded from @v.
458 raw_atomic_read_acquire(const atomic_t *v) in raw_atomic_read_acquire() argument
461 return arch_atomic_read_acquire(v); in raw_atomic_read_acquire()
466 ret = smp_load_acquire(&(v)->counter); in raw_atomic_read_acquire()
468 ret = raw_atomic_read(v); in raw_atomic_read_acquire()
478 * @v: pointer to atomic_t
481 * Atomically sets @v to @i with relaxed ordering.
488 raw_atomic_set(atomic_t *v, int i) in raw_atomic_set() argument
490 arch_atomic_set(v, i); in raw_atomic_set()
495 * @v: pointer to atomic_t
498 * Atomically sets @v to @i with release ordering.
505 raw_atomic_set_release(atomic_t *v, int i) in raw_atomic_set_release() argument
508 arch_atomic_set_release(v, i); in raw_atomic_set_release()
511 smp_store_release(&(v)->counter, i); in raw_atomic_set_release()
514 raw_atomic_set(v, i); in raw_atomic_set_release()
522 * @v: pointer to atomic_t
524 * Atomically updates @v to (@v + @i) with relaxed ordering.
531 raw_atomic_add(int i, atomic_t *v) in raw_atomic_add() argument
533 arch_atomic_add(i, v); in raw_atomic_add()
539 * @v: pointer to atomic_t
541 * Atomically updates @v to (@v + @i) with full ordering.
545 * Return: The updated value of @v.
548 raw_atomic_add_return(int i, atomic_t *v) in raw_atomic_add_return() argument
551 return arch_atomic_add_return(i, v); in raw_atomic_add_return()
555 ret = arch_atomic_add_return_relaxed(i, v); in raw_atomic_add_return()
566 * @v: pointer to atomic_t
568 * Atomically updates @v to (@v + @i) with acquire ordering.
572 * Return: The updated value of @v.
575 raw_atomic_add_return_acquire(int i, atomic_t *v) in raw_atomic_add_return_acquire() argument
578 return arch_atomic_add_return_acquire(i, v); in raw_atomic_add_return_acquire()
580 int ret = arch_atomic_add_return_relaxed(i, v); in raw_atomic_add_return_acquire()
584 return arch_atomic_add_return(i, v); in raw_atomic_add_return_acquire()
593 * @v: pointer to atomic_t
595 * Atomically updates @v to (@v + @i) with release ordering.
599 * Return: The updated value of @v.
602 raw_atomic_add_return_release(int i, atomic_t *v) in raw_atomic_add_return_release() argument
605 return arch_atomic_add_return_release(i, v); in raw_atomic_add_return_release()
608 return arch_atomic_add_return_relaxed(i, v); in raw_atomic_add_return_release()
610 return arch_atomic_add_return(i, v); in raw_atomic_add_return_release()
619 * @v: pointer to atomic_t
621 * Atomically updates @v to (@v + @i) with relaxed ordering.
625 * Return: The updated value of @v.
628 raw_atomic_add_return_relaxed(int i, atomic_t *v) in raw_atomic_add_return_relaxed() argument
631 return arch_atomic_add_return_relaxed(i, v); in raw_atomic_add_return_relaxed()
633 return arch_atomic_add_return(i, v); in raw_atomic_add_return_relaxed()
642 * @v: pointer to atomic_t
644 * Atomically updates @v to (@v + @i) with full ordering.
648 * Return: The original value of @v.
651 raw_atomic_fetch_add(int i, atomic_t *v) in raw_atomic_fetch_add() argument
654 return arch_atomic_fetch_add(i, v); in raw_atomic_fetch_add()
658 ret = arch_atomic_fetch_add_relaxed(i, v); in raw_atomic_fetch_add()
669 * @v: pointer to atomic_t
671 * Atomically updates @v to (@v + @i) with acquire ordering.
675 * Return: The original value of @v.
678 raw_atomic_fetch_add_acquire(int i, atomic_t *v) in raw_atomic_fetch_add_acquire() argument
681 return arch_atomic_fetch_add_acquire(i, v); in raw_atomic_fetch_add_acquire()
683 int ret = arch_atomic_fetch_add_relaxed(i, v); in raw_atomic_fetch_add_acquire()
687 return arch_atomic_fetch_add(i, v); in raw_atomic_fetch_add_acquire()
696 * @v: pointer to atomic_t
698 * Atomically updates @v to (@v + @i) with release ordering.
702 * Return: The original value of @v.
705 raw_atomic_fetch_add_release(int i, atomic_t *v) in raw_atomic_fetch_add_release() argument
708 return arch_atomic_fetch_add_release(i, v); in raw_atomic_fetch_add_release()
711 return arch_atomic_fetch_add_relaxed(i, v); in raw_atomic_fetch_add_release()
713 return arch_atomic_fetch_add(i, v); in raw_atomic_fetch_add_release()
722 * @v: pointer to atomic_t
724 * Atomically updates @v to (@v + @i) with relaxed ordering.
728 * Return: The original value of @v.
731 raw_atomic_fetch_add_relaxed(int i, atomic_t *v) in raw_atomic_fetch_add_relaxed() argument
734 return arch_atomic_fetch_add_relaxed(i, v); in raw_atomic_fetch_add_relaxed()
736 return arch_atomic_fetch_add(i, v); in raw_atomic_fetch_add_relaxed()
745 * @v: pointer to atomic_t
747 * Atomically updates @v to (@v - @i) with relaxed ordering.
754 raw_atomic_sub(int i, atomic_t *v) in raw_atomic_sub() argument
756 arch_atomic_sub(i, v); in raw_atomic_sub()
762 * @v: pointer to atomic_t
764 * Atomically updates @v to (@v - @i) with full ordering.
768 * Return: The updated value of @v.
771 raw_atomic_sub_return(int i, atomic_t *v) in raw_atomic_sub_return() argument
774 return arch_atomic_sub_return(i, v); in raw_atomic_sub_return()
778 ret = arch_atomic_sub_return_relaxed(i, v); in raw_atomic_sub_return()
789 * @v: pointer to atomic_t
791 * Atomically updates @v to (@v - @i) with acquire ordering.
795 * Return: The updated value of @v.
798 raw_atomic_sub_return_acquire(int i, atomic_t *v) in raw_atomic_sub_return_acquire() argument
801 return arch_atomic_sub_return_acquire(i, v); in raw_atomic_sub_return_acquire()
803 int ret = arch_atomic_sub_return_relaxed(i, v); in raw_atomic_sub_return_acquire()
807 return arch_atomic_sub_return(i, v); in raw_atomic_sub_return_acquire()
816 * @v: pointer to atomic_t
818 * Atomically updates @v to (@v - @i) with release ordering.
822 * Return: The updated value of @v.
825 raw_atomic_sub_return_release(int i, atomic_t *v) in raw_atomic_sub_return_release() argument
828 return arch_atomic_sub_return_release(i, v); in raw_atomic_sub_return_release()
831 return arch_atomic_sub_return_relaxed(i, v); in raw_atomic_sub_return_release()
833 return arch_atomic_sub_return(i, v); in raw_atomic_sub_return_release()
842 * @v: pointer to atomic_t
844 * Atomically updates @v to (@v - @i) with relaxed ordering.
848 * Return: The updated value of @v.
851 raw_atomic_sub_return_relaxed(int i, atomic_t *v) in raw_atomic_sub_return_relaxed() argument
854 return arch_atomic_sub_return_relaxed(i, v); in raw_atomic_sub_return_relaxed()
856 return arch_atomic_sub_return(i, v); in raw_atomic_sub_return_relaxed()
865 * @v: pointer to atomic_t
867 * Atomically updates @v to (@v - @i) with full ordering.
871 * Return: The original value of @v.
874 raw_atomic_fetch_sub(int i, atomic_t *v) in raw_atomic_fetch_sub() argument
877 return arch_atomic_fetch_sub(i, v); in raw_atomic_fetch_sub()
881 ret = arch_atomic_fetch_sub_relaxed(i, v); in raw_atomic_fetch_sub()
892 * @v: pointer to atomic_t
894 * Atomically updates @v to (@v - @i) with acquire ordering.
898 * Return: The original value of @v.
901 raw_atomic_fetch_sub_acquire(int i, atomic_t *v) in raw_atomic_fetch_sub_acquire() argument
904 return arch_atomic_fetch_sub_acquire(i, v); in raw_atomic_fetch_sub_acquire()
906 int ret = arch_atomic_fetch_sub_relaxed(i, v); in raw_atomic_fetch_sub_acquire()
910 return arch_atomic_fetch_sub(i, v); in raw_atomic_fetch_sub_acquire()
919 * @v: pointer to atomic_t
921 * Atomically updates @v to (@v - @i) with release ordering.
925 * Return: The original value of @v.
928 raw_atomic_fetch_sub_release(int i, atomic_t *v) in raw_atomic_fetch_sub_release() argument
931 return arch_atomic_fetch_sub_release(i, v); in raw_atomic_fetch_sub_release()
934 return arch_atomic_fetch_sub_relaxed(i, v); in raw_atomic_fetch_sub_release()
936 return arch_atomic_fetch_sub(i, v); in raw_atomic_fetch_sub_release()
945 * @v: pointer to atomic_t
947 * Atomically updates @v to (@v - @i) with relaxed ordering.
951 * Return: The original value of @v.
954 raw_atomic_fetch_sub_relaxed(int i, atomic_t *v) in raw_atomic_fetch_sub_relaxed() argument
957 return arch_atomic_fetch_sub_relaxed(i, v); in raw_atomic_fetch_sub_relaxed()
959 return arch_atomic_fetch_sub(i, v); in raw_atomic_fetch_sub_relaxed()
967 * @v: pointer to atomic_t
969 * Atomically updates @v to (@v + 1) with relaxed ordering.
976 raw_atomic_inc(atomic_t *v) in raw_atomic_inc() argument
979 arch_atomic_inc(v); in raw_atomic_inc()
981 raw_atomic_add(1, v); in raw_atomic_inc()
987 * @v: pointer to atomic_t
989 * Atomically updates @v to (@v + 1) with full ordering.
993 * Return: The updated value of @v.
996 raw_atomic_inc_return(atomic_t *v) in raw_atomic_inc_return() argument
999 return arch_atomic_inc_return(v); in raw_atomic_inc_return()
1003 ret = arch_atomic_inc_return_relaxed(v); in raw_atomic_inc_return()
1007 return raw_atomic_add_return(1, v); in raw_atomic_inc_return()
1013 * @v: pointer to atomic_t
1015 * Atomically updates @v to (@v + 1) with acquire ordering.
1019 * Return: The updated value of @v.
1022 raw_atomic_inc_return_acquire(atomic_t *v) in raw_atomic_inc_return_acquire() argument
1025 return arch_atomic_inc_return_acquire(v); in raw_atomic_inc_return_acquire()
1027 int ret = arch_atomic_inc_return_relaxed(v); in raw_atomic_inc_return_acquire()
1031 return arch_atomic_inc_return(v); in raw_atomic_inc_return_acquire()
1033 return raw_atomic_add_return_acquire(1, v); in raw_atomic_inc_return_acquire()
1039 * @v: pointer to atomic_t
1041 * Atomically updates @v to (@v + 1) with release ordering.
1045 * Return: The updated value of @v.
1048 raw_atomic_inc_return_release(atomic_t *v) in raw_atomic_inc_return_release() argument
1051 return arch_atomic_inc_return_release(v); in raw_atomic_inc_return_release()
1054 return arch_atomic_inc_return_relaxed(v); in raw_atomic_inc_return_release()
1056 return arch_atomic_inc_return(v); in raw_atomic_inc_return_release()
1058 return raw_atomic_add_return_release(1, v); in raw_atomic_inc_return_release()
1064 * @v: pointer to atomic_t
1066 * Atomically updates @v to (@v + 1) with relaxed ordering.
1070 * Return: The updated value of @v.
1073 raw_atomic_inc_return_relaxed(atomic_t *v) in raw_atomic_inc_return_relaxed() argument
1076 return arch_atomic_inc_return_relaxed(v); in raw_atomic_inc_return_relaxed()
1078 return arch_atomic_inc_return(v); in raw_atomic_inc_return_relaxed()
1080 return raw_atomic_add_return_relaxed(1, v); in raw_atomic_inc_return_relaxed()
1086 * @v: pointer to atomic_t
1088 * Atomically updates @v to (@v + 1) with full ordering.
1092 * Return: The original value of @v.
1095 raw_atomic_fetch_inc(atomic_t *v) in raw_atomic_fetch_inc() argument
1098 return arch_atomic_fetch_inc(v); in raw_atomic_fetch_inc()
1102 ret = arch_atomic_fetch_inc_relaxed(v); in raw_atomic_fetch_inc()
1106 return raw_atomic_fetch_add(1, v); in raw_atomic_fetch_inc()
1112 * @v: pointer to atomic_t
1114 * Atomically updates @v to (@v + 1) with acquire ordering.
1118 * Return: The original value of @v.
1121 raw_atomic_fetch_inc_acquire(atomic_t *v) in raw_atomic_fetch_inc_acquire() argument
1124 return arch_atomic_fetch_inc_acquire(v); in raw_atomic_fetch_inc_acquire()
1126 int ret = arch_atomic_fetch_inc_relaxed(v); in raw_atomic_fetch_inc_acquire()
1130 return arch_atomic_fetch_inc(v); in raw_atomic_fetch_inc_acquire()
1132 return raw_atomic_fetch_add_acquire(1, v); in raw_atomic_fetch_inc_acquire()
1138 * @v: pointer to atomic_t
1140 * Atomically updates @v to (@v + 1) with release ordering.
1144 * Return: The original value of @v.
1147 raw_atomic_fetch_inc_release(atomic_t *v) in raw_atomic_fetch_inc_release() argument
1150 return arch_atomic_fetch_inc_release(v); in raw_atomic_fetch_inc_release()
1153 return arch_atomic_fetch_inc_relaxed(v); in raw_atomic_fetch_inc_release()
1155 return arch_atomic_fetch_inc(v); in raw_atomic_fetch_inc_release()
1157 return raw_atomic_fetch_add_release(1, v); in raw_atomic_fetch_inc_release()
1163 * @v: pointer to atomic_t
1165 * Atomically updates @v to (@v + 1) with relaxed ordering.
1169 * Return: The original value of @v.
1172 raw_atomic_fetch_inc_relaxed(atomic_t *v) in raw_atomic_fetch_inc_relaxed() argument
1175 return arch_atomic_fetch_inc_relaxed(v); in raw_atomic_fetch_inc_relaxed()
1177 return arch_atomic_fetch_inc(v); in raw_atomic_fetch_inc_relaxed()
1179 return raw_atomic_fetch_add_relaxed(1, v); in raw_atomic_fetch_inc_relaxed()
1185 * @v: pointer to atomic_t
1187 * Atomically updates @v to (@v - 1) with relaxed ordering.
1194 raw_atomic_dec(atomic_t *v) in raw_atomic_dec() argument
1197 arch_atomic_dec(v); in raw_atomic_dec()
1199 raw_atomic_sub(1, v); in raw_atomic_dec()
1205 * @v: pointer to atomic_t
1207 * Atomically updates @v to (@v - 1) with full ordering.
1211 * Return: The updated value of @v.
1214 raw_atomic_dec_return(atomic_t *v) in raw_atomic_dec_return() argument
1217 return arch_atomic_dec_return(v); in raw_atomic_dec_return()
1221 ret = arch_atomic_dec_return_relaxed(v); in raw_atomic_dec_return()
1225 return raw_atomic_sub_return(1, v); in raw_atomic_dec_return()
1231 * @v: pointer to atomic_t
1233 * Atomically updates @v to (@v - 1) with acquire ordering.
1237 * Return: The updated value of @v.
1240 raw_atomic_dec_return_acquire(atomic_t *v) in raw_atomic_dec_return_acquire() argument
1243 return arch_atomic_dec_return_acquire(v); in raw_atomic_dec_return_acquire()
1245 int ret = arch_atomic_dec_return_relaxed(v); in raw_atomic_dec_return_acquire()
1249 return arch_atomic_dec_return(v); in raw_atomic_dec_return_acquire()
1251 return raw_atomic_sub_return_acquire(1, v); in raw_atomic_dec_return_acquire()
1257 * @v: pointer to atomic_t
1259 * Atomically updates @v to (@v - 1) with release ordering.
1263 * Return: The updated value of @v.
1266 raw_atomic_dec_return_release(atomic_t *v) in raw_atomic_dec_return_release() argument
1269 return arch_atomic_dec_return_release(v); in raw_atomic_dec_return_release()
1272 return arch_atomic_dec_return_relaxed(v); in raw_atomic_dec_return_release()
1274 return arch_atomic_dec_return(v); in raw_atomic_dec_return_release()
1276 return raw_atomic_sub_return_release(1, v); in raw_atomic_dec_return_release()
1282 * @v: pointer to atomic_t
1284 * Atomically updates @v to (@v - 1) with relaxed ordering.
1288 * Return: The updated value of @v.
1291 raw_atomic_dec_return_relaxed(atomic_t *v) in raw_atomic_dec_return_relaxed() argument
1294 return arch_atomic_dec_return_relaxed(v); in raw_atomic_dec_return_relaxed()
1296 return arch_atomic_dec_return(v); in raw_atomic_dec_return_relaxed()
1298 return raw_atomic_sub_return_relaxed(1, v); in raw_atomic_dec_return_relaxed()
1304 * @v: pointer to atomic_t
1306 * Atomically updates @v to (@v - 1) with full ordering.
1310 * Return: The original value of @v.
1313 raw_atomic_fetch_dec(atomic_t *v) in raw_atomic_fetch_dec() argument
1316 return arch_atomic_fetch_dec(v); in raw_atomic_fetch_dec()
1320 ret = arch_atomic_fetch_dec_relaxed(v); in raw_atomic_fetch_dec()
1324 return raw_atomic_fetch_sub(1, v); in raw_atomic_fetch_dec()
1330 * @v: pointer to atomic_t
1332 * Atomically updates @v to (@v - 1) with acquire ordering.
1336 * Return: The original value of @v.
1339 raw_atomic_fetch_dec_acquire(atomic_t *v) in raw_atomic_fetch_dec_acquire() argument
1342 return arch_atomic_fetch_dec_acquire(v); in raw_atomic_fetch_dec_acquire()
1344 int ret = arch_atomic_fetch_dec_relaxed(v); in raw_atomic_fetch_dec_acquire()
1348 return arch_atomic_fetch_dec(v); in raw_atomic_fetch_dec_acquire()
1350 return raw_atomic_fetch_sub_acquire(1, v); in raw_atomic_fetch_dec_acquire()
1356 * @v: pointer to atomic_t
1358 * Atomically updates @v to (@v - 1) with release ordering.
1362 * Return: The original value of @v.
1365 raw_atomic_fetch_dec_release(atomic_t *v) in raw_atomic_fetch_dec_release() argument
1368 return arch_atomic_fetch_dec_release(v); in raw_atomic_fetch_dec_release()
1371 return arch_atomic_fetch_dec_relaxed(v); in raw_atomic_fetch_dec_release()
1373 return arch_atomic_fetch_dec(v); in raw_atomic_fetch_dec_release()
1375 return raw_atomic_fetch_sub_release(1, v); in raw_atomic_fetch_dec_release()
1381 * @v: pointer to atomic_t
1383 * Atomically updates @v to (@v - 1) with relaxed ordering.
1387 * Return: The original value of @v.
1390 raw_atomic_fetch_dec_relaxed(atomic_t *v) in raw_atomic_fetch_dec_relaxed() argument
1393 return arch_atomic_fetch_dec_relaxed(v); in raw_atomic_fetch_dec_relaxed()
1395 return arch_atomic_fetch_dec(v); in raw_atomic_fetch_dec_relaxed()
1397 return raw_atomic_fetch_sub_relaxed(1, v); in raw_atomic_fetch_dec_relaxed()
1404 * @v: pointer to atomic_t
1406 * Atomically updates @v to (@v & @i) with relaxed ordering.
1413 raw_atomic_and(int i, atomic_t *v) in raw_atomic_and() argument
1415 arch_atomic_and(i, v); in raw_atomic_and()
1421 * @v: pointer to atomic_t
1423 * Atomically updates @v to (@v & @i) with full ordering.
1427 * Return: The original value of @v.
1430 raw_atomic_fetch_and(int i, atomic_t *v) in raw_atomic_fetch_and() argument
1433 return arch_atomic_fetch_and(i, v); in raw_atomic_fetch_and()
1437 ret = arch_atomic_fetch_and_relaxed(i, v); in raw_atomic_fetch_and()
1448 * @v: pointer to atomic_t
1450 * Atomically updates @v to (@v & @i) with acquire ordering.
1454 * Return: The original value of @v.
1457 raw_atomic_fetch_and_acquire(int i, atomic_t *v) in raw_atomic_fetch_and_acquire() argument
1460 return arch_atomic_fetch_and_acquire(i, v); in raw_atomic_fetch_and_acquire()
1462 int ret = arch_atomic_fetch_and_relaxed(i, v); in raw_atomic_fetch_and_acquire()
1466 return arch_atomic_fetch_and(i, v); in raw_atomic_fetch_and_acquire()
1475 * @v: pointer to atomic_t
1477 * Atomically updates @v to (@v & @i) with release ordering.
1481 * Return: The original value of @v.
1484 raw_atomic_fetch_and_release(int i, atomic_t *v) in raw_atomic_fetch_and_release() argument
1487 return arch_atomic_fetch_and_release(i, v); in raw_atomic_fetch_and_release()
1490 return arch_atomic_fetch_and_relaxed(i, v); in raw_atomic_fetch_and_release()
1492 return arch_atomic_fetch_and(i, v); in raw_atomic_fetch_and_release()
1501 * @v: pointer to atomic_t
1503 * Atomically updates @v to (@v & @i) with relaxed ordering.
1507 * Return: The original value of @v.
1510 raw_atomic_fetch_and_relaxed(int i, atomic_t *v) in raw_atomic_fetch_and_relaxed() argument
1513 return arch_atomic_fetch_and_relaxed(i, v); in raw_atomic_fetch_and_relaxed()
1515 return arch_atomic_fetch_and(i, v); in raw_atomic_fetch_and_relaxed()
1524 * @v: pointer to atomic_t
1526 * Atomically updates @v to (@v & ~@i) with relaxed ordering.
1533 raw_atomic_andnot(int i, atomic_t *v) in raw_atomic_andnot() argument
1536 arch_atomic_andnot(i, v); in raw_atomic_andnot()
1538 raw_atomic_and(~i, v); in raw_atomic_andnot()
1545 * @v: pointer to atomic_t
1547 * Atomically updates @v to (@v & ~@i) with full ordering.
1551 * Return: The original value of @v.
1554 raw_atomic_fetch_andnot(int i, atomic_t *v) in raw_atomic_fetch_andnot() argument
1557 return arch_atomic_fetch_andnot(i, v); in raw_atomic_fetch_andnot()
1561 ret = arch_atomic_fetch_andnot_relaxed(i, v); in raw_atomic_fetch_andnot()
1565 return raw_atomic_fetch_and(~i, v); in raw_atomic_fetch_andnot()
1572 * @v: pointer to atomic_t
1574 * Atomically updates @v to (@v & ~@i) with acquire ordering.
1578 * Return: The original value of @v.
1581 raw_atomic_fetch_andnot_acquire(int i, atomic_t *v) in raw_atomic_fetch_andnot_acquire() argument
1584 return arch_atomic_fetch_andnot_acquire(i, v); in raw_atomic_fetch_andnot_acquire()
1586 int ret = arch_atomic_fetch_andnot_relaxed(i, v); in raw_atomic_fetch_andnot_acquire()
1590 return arch_atomic_fetch_andnot(i, v); in raw_atomic_fetch_andnot_acquire()
1592 return raw_atomic_fetch_and_acquire(~i, v); in raw_atomic_fetch_andnot_acquire()
1599 * @v: pointer to atomic_t
1601 * Atomically updates @v to (@v & ~@i) with release ordering.
1605 * Return: The original value of @v.
1608 raw_atomic_fetch_andnot_release(int i, atomic_t *v) in raw_atomic_fetch_andnot_release() argument
1611 return arch_atomic_fetch_andnot_release(i, v); in raw_atomic_fetch_andnot_release()
1614 return arch_atomic_fetch_andnot_relaxed(i, v); in raw_atomic_fetch_andnot_release()
1616 return arch_atomic_fetch_andnot(i, v); in raw_atomic_fetch_andnot_release()
1618 return raw_atomic_fetch_and_release(~i, v); in raw_atomic_fetch_andnot_release()
1625 * @v: pointer to atomic_t
1627 * Atomically updates @v to (@v & ~@i) with relaxed ordering.
1631 * Return: The original value of @v.
1634 raw_atomic_fetch_andnot_relaxed(int i, atomic_t *v) in raw_atomic_fetch_andnot_relaxed() argument
1637 return arch_atomic_fetch_andnot_relaxed(i, v); in raw_atomic_fetch_andnot_relaxed()
1639 return arch_atomic_fetch_andnot(i, v); in raw_atomic_fetch_andnot_relaxed()
1641 return raw_atomic_fetch_and_relaxed(~i, v); in raw_atomic_fetch_andnot_relaxed()
1648 * @v: pointer to atomic_t
1650 * Atomically updates @v to (@v | @i) with relaxed ordering.
1657 raw_atomic_or(int i, atomic_t *v) in raw_atomic_or() argument
1659 arch_atomic_or(i, v); in raw_atomic_or()
1665 * @v: pointer to atomic_t
1667 * Atomically updates @v to (@v | @i) with full ordering.
1671 * Return: The original value of @v.
1674 raw_atomic_fetch_or(int i, atomic_t *v) in raw_atomic_fetch_or() argument
1677 return arch_atomic_fetch_or(i, v); in raw_atomic_fetch_or()
1681 ret = arch_atomic_fetch_or_relaxed(i, v); in raw_atomic_fetch_or()
1692 * @v: pointer to atomic_t
1694 * Atomically updates @v to (@v | @i) with acquire ordering.
1698 * Return: The original value of @v.
1701 raw_atomic_fetch_or_acquire(int i, atomic_t *v) in raw_atomic_fetch_or_acquire() argument
1704 return arch_atomic_fetch_or_acquire(i, v); in raw_atomic_fetch_or_acquire()
1706 int ret = arch_atomic_fetch_or_relaxed(i, v); in raw_atomic_fetch_or_acquire()
1710 return arch_atomic_fetch_or(i, v); in raw_atomic_fetch_or_acquire()
1719 * @v: pointer to atomic_t
1721 * Atomically updates @v to (@v | @i) with release ordering.
1725 * Return: The original value of @v.
1728 raw_atomic_fetch_or_release(int i, atomic_t *v) in raw_atomic_fetch_or_release() argument
1731 return arch_atomic_fetch_or_release(i, v); in raw_atomic_fetch_or_release()
1734 return arch_atomic_fetch_or_relaxed(i, v); in raw_atomic_fetch_or_release()
1736 return arch_atomic_fetch_or(i, v); in raw_atomic_fetch_or_release()
1745 * @v: pointer to atomic_t
1747 * Atomically updates @v to (@v | @i) with relaxed ordering.
1751 * Return: The original value of @v.
1754 raw_atomic_fetch_or_relaxed(int i, atomic_t *v) in raw_atomic_fetch_or_relaxed() argument
1757 return arch_atomic_fetch_or_relaxed(i, v); in raw_atomic_fetch_or_relaxed()
1759 return arch_atomic_fetch_or(i, v); in raw_atomic_fetch_or_relaxed()
1768 * @v: pointer to atomic_t
1770 * Atomically updates @v to (@v ^ @i) with relaxed ordering.
1777 raw_atomic_xor(int i, atomic_t *v) in raw_atomic_xor() argument
1779 arch_atomic_xor(i, v); in raw_atomic_xor()
1785 * @v: pointer to atomic_t
1787 * Atomically updates @v to (@v ^ @i) with full ordering.
1791 * Return: The original value of @v.
1794 raw_atomic_fetch_xor(int i, atomic_t *v) in raw_atomic_fetch_xor() argument
1797 return arch_atomic_fetch_xor(i, v); in raw_atomic_fetch_xor()
1801 ret = arch_atomic_fetch_xor_relaxed(i, v); in raw_atomic_fetch_xor()
1812 * @v: pointer to atomic_t
1814 * Atomically updates @v to (@v ^ @i) with acquire ordering.
1818 * Return: The original value of @v.
1821 raw_atomic_fetch_xor_acquire(int i, atomic_t *v) in raw_atomic_fetch_xor_acquire() argument
1824 return arch_atomic_fetch_xor_acquire(i, v); in raw_atomic_fetch_xor_acquire()
1826 int ret = arch_atomic_fetch_xor_relaxed(i, v); in raw_atomic_fetch_xor_acquire()
1830 return arch_atomic_fetch_xor(i, v); in raw_atomic_fetch_xor_acquire()
1839 * @v: pointer to atomic_t
1841 * Atomically updates @v to (@v ^ @i) with release ordering.
1845 * Return: The original value of @v.
1848 raw_atomic_fetch_xor_release(int i, atomic_t *v) in raw_atomic_fetch_xor_release() argument
1851 return arch_atomic_fetch_xor_release(i, v); in raw_atomic_fetch_xor_release()
1854 return arch_atomic_fetch_xor_relaxed(i, v); in raw_atomic_fetch_xor_release()
1856 return arch_atomic_fetch_xor(i, v); in raw_atomic_fetch_xor_release()
1865 * @v: pointer to atomic_t
1867 * Atomically updates @v to (@v ^ @i) with relaxed ordering.
1871 * Return: The original value of @v.
1874 raw_atomic_fetch_xor_relaxed(int i, atomic_t *v) in raw_atomic_fetch_xor_relaxed() argument
1877 return arch_atomic_fetch_xor_relaxed(i, v); in raw_atomic_fetch_xor_relaxed()
1879 return arch_atomic_fetch_xor(i, v); in raw_atomic_fetch_xor_relaxed()
1887 * @v: pointer to atomic_t
1890 * Atomically updates @v to @new with full ordering.
1894 * Return: The original value of @v.
1897 raw_atomic_xchg(atomic_t *v, int new) in raw_atomic_xchg() argument
1900 return arch_atomic_xchg(v, new); in raw_atomic_xchg()
1904 ret = arch_atomic_xchg_relaxed(v, new); in raw_atomic_xchg()
1908 return raw_xchg(&v->counter, new); in raw_atomic_xchg()
1914 * @v: pointer to atomic_t
1917 * Atomically updates @v to @new with acquire ordering.
1921 * Return: The original value of @v.
1924 raw_atomic_xchg_acquire(atomic_t *v, int new) in raw_atomic_xchg_acquire() argument
1927 return arch_atomic_xchg_acquire(v, new); in raw_atomic_xchg_acquire()
1929 int ret = arch_atomic_xchg_relaxed(v, new); in raw_atomic_xchg_acquire()
1933 return arch_atomic_xchg(v, new); in raw_atomic_xchg_acquire()
1935 return raw_xchg_acquire(&v->counter, new); in raw_atomic_xchg_acquire()
1941 * @v: pointer to atomic_t
1944 * Atomically updates @v to @new with release ordering.
1948 * Return: The original value of @v.
1951 raw_atomic_xchg_release(atomic_t *v, int new) in raw_atomic_xchg_release() argument
1954 return arch_atomic_xchg_release(v, new); in raw_atomic_xchg_release()
1957 return arch_atomic_xchg_relaxed(v, new); in raw_atomic_xchg_release()
1959 return arch_atomic_xchg(v, new); in raw_atomic_xchg_release()
1961 return raw_xchg_release(&v->counter, new); in raw_atomic_xchg_release()
1967 * @v: pointer to atomic_t
1970 * Atomically updates @v to @new with relaxed ordering.
1974 * Return: The original value of @v.
1977 raw_atomic_xchg_relaxed(atomic_t *v, int new) in raw_atomic_xchg_relaxed() argument
1980 return arch_atomic_xchg_relaxed(v, new); in raw_atomic_xchg_relaxed()
1982 return arch_atomic_xchg(v, new); in raw_atomic_xchg_relaxed()
1984 return raw_xchg_relaxed(&v->counter, new); in raw_atomic_xchg_relaxed()
1990 * @v: pointer to atomic_t
1994 * If (@v == @old), atomically updates @v to @new with full ordering.
1998 * Return: The original value of @v.
2001 raw_atomic_cmpxchg(atomic_t *v, int old, int new) in raw_atomic_cmpxchg() argument
2004 return arch_atomic_cmpxchg(v, old, new); in raw_atomic_cmpxchg()
2008 ret = arch_atomic_cmpxchg_relaxed(v, old, new); in raw_atomic_cmpxchg()
2012 return raw_cmpxchg(&v->counter, old, new); in raw_atomic_cmpxchg()
2018 * @v: pointer to atomic_t
2022 * If (@v == @old), atomically updates @v to @new with acquire ordering.
2026 * Return: The original value of @v.
2029 raw_atomic_cmpxchg_acquire(atomic_t *v, int old, int new) in raw_atomic_cmpxchg_acquire() argument
2032 return arch_atomic_cmpxchg_acquire(v, old, new); in raw_atomic_cmpxchg_acquire()
2034 int ret = arch_atomic_cmpxchg_relaxed(v, old, new); in raw_atomic_cmpxchg_acquire()
2038 return arch_atomic_cmpxchg(v, old, new); in raw_atomic_cmpxchg_acquire()
2040 return raw_cmpxchg_acquire(&v->counter, old, new); in raw_atomic_cmpxchg_acquire()
2046 * @v: pointer to atomic_t
2050 * If (@v == @old), atomically updates @v to @new with release ordering.
2054 * Return: The original value of @v.
2057 raw_atomic_cmpxchg_release(atomic_t *v, int old, int new) in raw_atomic_cmpxchg_release() argument
2060 return arch_atomic_cmpxchg_release(v, old, new); in raw_atomic_cmpxchg_release()
2063 return arch_atomic_cmpxchg_relaxed(v, old, new); in raw_atomic_cmpxchg_release()
2065 return arch_atomic_cmpxchg(v, old, new); in raw_atomic_cmpxchg_release()
2067 return raw_cmpxchg_release(&v->counter, old, new); in raw_atomic_cmpxchg_release()
2073 * @v: pointer to atomic_t
2077 * If (@v == @old), atomically updates @v to @new with relaxed ordering.
2081 * Return: The original value of @v.
2084 raw_atomic_cmpxchg_relaxed(atomic_t *v, int old, int new) in raw_atomic_cmpxchg_relaxed() argument
2087 return arch_atomic_cmpxchg_relaxed(v, old, new); in raw_atomic_cmpxchg_relaxed()
2089 return arch_atomic_cmpxchg(v, old, new); in raw_atomic_cmpxchg_relaxed()
2091 return raw_cmpxchg_relaxed(&v->counter, old, new); in raw_atomic_cmpxchg_relaxed()
2097 * @v: pointer to atomic_t
2101 * If (@v == @old), atomically updates @v to @new with full ordering.
2102 * Otherwise, updates @old to the current value of @v.
2109 raw_atomic_try_cmpxchg(atomic_t *v, int *old, int new) in raw_atomic_try_cmpxchg() argument
2112 return arch_atomic_try_cmpxchg(v, old, new); in raw_atomic_try_cmpxchg()
2116 ret = arch_atomic_try_cmpxchg_relaxed(v, old, new); in raw_atomic_try_cmpxchg()
2121 r = raw_atomic_cmpxchg(v, o, new); in raw_atomic_try_cmpxchg()
2130 * @v: pointer to atomic_t
2134 * If (@v == @old), atomically updates @v to @new with acquire ordering.
2135 * Otherwise, updates @old to the current value of @v.
2142 raw_atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new) in raw_atomic_try_cmpxchg_acquire() argument
2145 return arch_atomic_try_cmpxchg_acquire(v, old, new); in raw_atomic_try_cmpxchg_acquire()
2147 bool ret = arch_atomic_try_cmpxchg_relaxed(v, old, new); in raw_atomic_try_cmpxchg_acquire()
2151 return arch_atomic_try_cmpxchg(v, old, new); in raw_atomic_try_cmpxchg_acquire()
2154 r = raw_atomic_cmpxchg_acquire(v, o, new); in raw_atomic_try_cmpxchg_acquire()
2163 * @v: pointer to atomic_t
2167 * If (@v == @old), atomically updates @v to @new with release ordering.
2168 * Otherwise, updates @old to the current value of @v.
2175 raw_atomic_try_cmpxchg_release(atomic_t *v, int *old, int new) in raw_atomic_try_cmpxchg_release() argument
2178 return arch_atomic_try_cmpxchg_release(v, old, new); in raw_atomic_try_cmpxchg_release()
2181 return arch_atomic_try_cmpxchg_relaxed(v, old, new); in raw_atomic_try_cmpxchg_release()
2183 return arch_atomic_try_cmpxchg(v, old, new); in raw_atomic_try_cmpxchg_release()
2186 r = raw_atomic_cmpxchg_release(v, o, new); in raw_atomic_try_cmpxchg_release()
2195 * @v: pointer to atomic_t
2199 * If (@v == @old), atomically updates @v to @new with relaxed ordering.
2200 * Otherwise, updates @old to the current value of @v.
2207 raw_atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new) in raw_atomic_try_cmpxchg_relaxed() argument
2210 return arch_atomic_try_cmpxchg_relaxed(v, old, new); in raw_atomic_try_cmpxchg_relaxed()
2212 return arch_atomic_try_cmpxchg(v, old, new); in raw_atomic_try_cmpxchg_relaxed()
2215 r = raw_atomic_cmpxchg_relaxed(v, o, new); in raw_atomic_try_cmpxchg_relaxed()
2225 * @v: pointer to atomic_t
2227 * Atomically updates @v to (@v - @i) with full ordering.
2231 * Return: @true if the resulting value of @v is zero, @false otherwise.
2234 raw_atomic_sub_and_test(int i, atomic_t *v) in raw_atomic_sub_and_test() argument
2237 return arch_atomic_sub_and_test(i, v); in raw_atomic_sub_and_test()
2239 return raw_atomic_sub_return(i, v) == 0; in raw_atomic_sub_and_test()
2245 * @v: pointer to atomic_t
2247 * Atomically updates @v to (@v - 1) with full ordering.
2251 * Return: @true if the resulting value of @v is zero, @false otherwise.
2254 raw_atomic_dec_and_test(atomic_t *v) in raw_atomic_dec_and_test() argument
2257 return arch_atomic_dec_and_test(v); in raw_atomic_dec_and_test()
2259 return raw_atomic_dec_return(v) == 0; in raw_atomic_dec_and_test()
2265 * @v: pointer to atomic_t
2267 * Atomically updates @v to (@v + 1) with full ordering.
2271 * Return: @true if the resulting value of @v is zero, @false otherwise.
2274 raw_atomic_inc_and_test(atomic_t *v) in raw_atomic_inc_and_test() argument
2277 return arch_atomic_inc_and_test(v); in raw_atomic_inc_and_test()
2279 return raw_atomic_inc_return(v) == 0; in raw_atomic_inc_and_test()
2286 * @v: pointer to atomic_t
2288 * Atomically updates @v to (@v + @i) with full ordering.
2292 * Return: @true if the resulting value of @v is negative, @false otherwise.
2295 raw_atomic_add_negative(int i, atomic_t *v) in raw_atomic_add_negative() argument
2298 return arch_atomic_add_negative(i, v); in raw_atomic_add_negative()
2302 ret = arch_atomic_add_negative_relaxed(i, v); in raw_atomic_add_negative()
2306 return raw_atomic_add_return(i, v) < 0; in raw_atomic_add_negative()
2313 * @v: pointer to atomic_t
2315 * Atomically updates @v to (@v + @i) with acquire ordering.
2319 * Return: @true if the resulting value of @v is negative, @false otherwise.
2322 raw_atomic_add_negative_acquire(int i, atomic_t *v) in raw_atomic_add_negative_acquire() argument
2325 return arch_atomic_add_negative_acquire(i, v); in raw_atomic_add_negative_acquire()
2327 bool ret = arch_atomic_add_negative_relaxed(i, v); in raw_atomic_add_negative_acquire()
2331 return arch_atomic_add_negative(i, v); in raw_atomic_add_negative_acquire()
2333 return raw_atomic_add_return_acquire(i, v) < 0; in raw_atomic_add_negative_acquire()
2340 * @v: pointer to atomic_t
2342 * Atomically updates @v to (@v + @i) with release ordering.
2346 * Return: @true if the resulting value of @v is negative, @false otherwise.
2349 raw_atomic_add_negative_release(int i, atomic_t *v) in raw_atomic_add_negative_release() argument
2352 return arch_atomic_add_negative_release(i, v); in raw_atomic_add_negative_release()
2355 return arch_atomic_add_negative_relaxed(i, v); in raw_atomic_add_negative_release()
2357 return arch_atomic_add_negative(i, v); in raw_atomic_add_negative_release()
2359 return raw_atomic_add_return_release(i, v) < 0; in raw_atomic_add_negative_release()
2366 * @v: pointer to atomic_t
2368 * Atomically updates @v to (@v + @i) with relaxed ordering.
2372 * Return: @true if the resulting value of @v is negative, @false otherwise.
2375 raw_atomic_add_negative_relaxed(int i, atomic_t *v) in raw_atomic_add_negative_relaxed() argument
2378 return arch_atomic_add_negative_relaxed(i, v); in raw_atomic_add_negative_relaxed()
2380 return arch_atomic_add_negative(i, v); in raw_atomic_add_negative_relaxed()
2382 return raw_atomic_add_return_relaxed(i, v) < 0; in raw_atomic_add_negative_relaxed()
2388 * @v: pointer to atomic_t
2392 * If (@v != @u), atomically updates @v to (@v + @a) with full ordering.
2396 * Return: The original value of @v.
2399 raw_atomic_fetch_add_unless(atomic_t *v, int a, int u) in raw_atomic_fetch_add_unless() argument
2402 return arch_atomic_fetch_add_unless(v, a, u); in raw_atomic_fetch_add_unless()
2404 int c = raw_atomic_read(v); in raw_atomic_fetch_add_unless()
2409 } while (!raw_atomic_try_cmpxchg(v, &c, c + a)); in raw_atomic_fetch_add_unless()
2417 * @v: pointer to atomic_t
2421 * If (@v != @u), atomically updates @v to (@v + @a) with full ordering.
2425 * Return: @true if @v was updated, @false otherwise.
2428 raw_atomic_add_unless(atomic_t *v, int a, int u) in raw_atomic_add_unless() argument
2431 return arch_atomic_add_unless(v, a, u); in raw_atomic_add_unless()
2433 return raw_atomic_fetch_add_unless(v, a, u) != u; in raw_atomic_add_unless()
2439 * @v: pointer to atomic_t
2441 * If (@v != 0), atomically updates @v to (@v + 1) with full ordering.
2445 * Return: @true if @v was updated, @false otherwise.
2448 raw_atomic_inc_not_zero(atomic_t *v) in raw_atomic_inc_not_zero() argument
2451 return arch_atomic_inc_not_zero(v); in raw_atomic_inc_not_zero()
2453 return raw_atomic_add_unless(v, 1, 0); in raw_atomic_inc_not_zero()
2459 * @v: pointer to atomic_t
2461 * If (@v >= 0), atomically updates @v to (@v + 1) with full ordering.
2465 * Return: @true if @v was updated, @false otherwise.
2468 raw_atomic_inc_unless_negative(atomic_t *v) in raw_atomic_inc_unless_negative() argument
2471 return arch_atomic_inc_unless_negative(v); in raw_atomic_inc_unless_negative()
2473 int c = raw_atomic_read(v); in raw_atomic_inc_unless_negative()
2478 } while (!raw_atomic_try_cmpxchg(v, &c, c + 1)); in raw_atomic_inc_unless_negative()
2486 * @v: pointer to atomic_t
2488 * If (@v <= 0), atomically updates @v to (@v - 1) with full ordering.
2492 * Return: @true if @v was updated, @false otherwise.
2495 raw_atomic_dec_unless_positive(atomic_t *v) in raw_atomic_dec_unless_positive() argument
2498 return arch_atomic_dec_unless_positive(v); in raw_atomic_dec_unless_positive()
2500 int c = raw_atomic_read(v); in raw_atomic_dec_unless_positive()
2505 } while (!raw_atomic_try_cmpxchg(v, &c, c - 1)); in raw_atomic_dec_unless_positive()
2513 * @v: pointer to atomic_t
2515 * If (@v > 0), atomically updates @v to (@v - 1) with full ordering.
2519 * Return: The old value of (@v - 1), regardless of whether @v was updated.
2522 raw_atomic_dec_if_positive(atomic_t *v) in raw_atomic_dec_if_positive() argument
2525 return arch_atomic_dec_if_positive(v); in raw_atomic_dec_if_positive()
2527 int dec, c = raw_atomic_read(v); in raw_atomic_dec_if_positive()
2533 } while (!raw_atomic_try_cmpxchg(v, &c, dec)); in raw_atomic_dec_if_positive()
2545 * @v: pointer to atomic64_t
2547 * Atomically loads the value of @v with relaxed ordering.
2551 * Return: The value loaded from @v.
2554 raw_atomic64_read(const atomic64_t *v) in raw_atomic64_read() argument
2556 return arch_atomic64_read(v); in raw_atomic64_read()
2561 * @v: pointer to atomic64_t
2563 * Atomically loads the value of @v with acquire ordering.
2567 * Return: The value loaded from @v.
2570 raw_atomic64_read_acquire(const atomic64_t *v) in raw_atomic64_read_acquire() argument
2573 return arch_atomic64_read_acquire(v); in raw_atomic64_read_acquire()
2578 ret = smp_load_acquire(&(v)->counter); in raw_atomic64_read_acquire()
2580 ret = raw_atomic64_read(v); in raw_atomic64_read_acquire()
2590 * @v: pointer to atomic64_t
2593 * Atomically sets @v to @i with relaxed ordering.
2600 raw_atomic64_set(atomic64_t *v, s64 i) in raw_atomic64_set() argument
2602 arch_atomic64_set(v, i); in raw_atomic64_set()
2607 * @v: pointer to atomic64_t
2610 * Atomically sets @v to @i with release ordering.
2617 raw_atomic64_set_release(atomic64_t *v, s64 i) in raw_atomic64_set_release() argument
2620 arch_atomic64_set_release(v, i); in raw_atomic64_set_release()
2623 smp_store_release(&(v)->counter, i); in raw_atomic64_set_release()
2626 raw_atomic64_set(v, i); in raw_atomic64_set_release()
2634 * @v: pointer to atomic64_t
2636 * Atomically updates @v to (@v + @i) with relaxed ordering.
2643 raw_atomic64_add(s64 i, atomic64_t *v) in raw_atomic64_add() argument
2645 arch_atomic64_add(i, v); in raw_atomic64_add()
2651 * @v: pointer to atomic64_t
2653 * Atomically updates @v to (@v + @i) with full ordering.
2657 * Return: The updated value of @v.
2660 raw_atomic64_add_return(s64 i, atomic64_t *v) in raw_atomic64_add_return() argument
2663 return arch_atomic64_add_return(i, v); in raw_atomic64_add_return()
2667 ret = arch_atomic64_add_return_relaxed(i, v); in raw_atomic64_add_return()
2678 * @v: pointer to atomic64_t
2680 * Atomically updates @v to (@v + @i) with acquire ordering.
2684 * Return: The updated value of @v.
2687 raw_atomic64_add_return_acquire(s64 i, atomic64_t *v) in raw_atomic64_add_return_acquire() argument
2690 return arch_atomic64_add_return_acquire(i, v); in raw_atomic64_add_return_acquire()
2692 s64 ret = arch_atomic64_add_return_relaxed(i, v); in raw_atomic64_add_return_acquire()
2696 return arch_atomic64_add_return(i, v); in raw_atomic64_add_return_acquire()
2705 * @v: pointer to atomic64_t
2707 * Atomically updates @v to (@v + @i) with release ordering.
2711 * Return: The updated value of @v.
2714 raw_atomic64_add_return_release(s64 i, atomic64_t *v) in raw_atomic64_add_return_release() argument
2717 return arch_atomic64_add_return_release(i, v); in raw_atomic64_add_return_release()
2720 return arch_atomic64_add_return_relaxed(i, v); in raw_atomic64_add_return_release()
2722 return arch_atomic64_add_return(i, v); in raw_atomic64_add_return_release()
2731 * @v: pointer to atomic64_t
2733 * Atomically updates @v to (@v + @i) with relaxed ordering.
2737 * Return: The updated value of @v.
2740 raw_atomic64_add_return_relaxed(s64 i, atomic64_t *v) in raw_atomic64_add_return_relaxed() argument
2743 return arch_atomic64_add_return_relaxed(i, v); in raw_atomic64_add_return_relaxed()
2745 return arch_atomic64_add_return(i, v); in raw_atomic64_add_return_relaxed()
2754 * @v: pointer to atomic64_t
2756 * Atomically updates @v to (@v + @i) with full ordering.
2760 * Return: The original value of @v.
2763 raw_atomic64_fetch_add(s64 i, atomic64_t *v) in raw_atomic64_fetch_add() argument
2766 return arch_atomic64_fetch_add(i, v); in raw_atomic64_fetch_add()
2770 ret = arch_atomic64_fetch_add_relaxed(i, v); in raw_atomic64_fetch_add()
2781 * @v: pointer to atomic64_t
2783 * Atomically updates @v to (@v + @i) with acquire ordering.
2787 * Return: The original value of @v.
2790 raw_atomic64_fetch_add_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_add_acquire() argument
2793 return arch_atomic64_fetch_add_acquire(i, v); in raw_atomic64_fetch_add_acquire()
2795 s64 ret = arch_atomic64_fetch_add_relaxed(i, v); in raw_atomic64_fetch_add_acquire()
2799 return arch_atomic64_fetch_add(i, v); in raw_atomic64_fetch_add_acquire()
2808 * @v: pointer to atomic64_t
2810 * Atomically updates @v to (@v + @i) with release ordering.
2814 * Return: The original value of @v.
2817 raw_atomic64_fetch_add_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_add_release() argument
2820 return arch_atomic64_fetch_add_release(i, v); in raw_atomic64_fetch_add_release()
2823 return arch_atomic64_fetch_add_relaxed(i, v); in raw_atomic64_fetch_add_release()
2825 return arch_atomic64_fetch_add(i, v); in raw_atomic64_fetch_add_release()
2834 * @v: pointer to atomic64_t
2836 * Atomically updates @v to (@v + @i) with relaxed ordering.
2840 * Return: The original value of @v.
2843 raw_atomic64_fetch_add_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_add_relaxed() argument
2846 return arch_atomic64_fetch_add_relaxed(i, v); in raw_atomic64_fetch_add_relaxed()
2848 return arch_atomic64_fetch_add(i, v); in raw_atomic64_fetch_add_relaxed()
2857 * @v: pointer to atomic64_t
2859 * Atomically updates @v to (@v - @i) with relaxed ordering.
2866 raw_atomic64_sub(s64 i, atomic64_t *v) in raw_atomic64_sub() argument
2868 arch_atomic64_sub(i, v); in raw_atomic64_sub()
2874 * @v: pointer to atomic64_t
2876 * Atomically updates @v to (@v - @i) with full ordering.
2880 * Return: The updated value of @v.
2883 raw_atomic64_sub_return(s64 i, atomic64_t *v) in raw_atomic64_sub_return() argument
2886 return arch_atomic64_sub_return(i, v); in raw_atomic64_sub_return()
2890 ret = arch_atomic64_sub_return_relaxed(i, v); in raw_atomic64_sub_return()
2901 * @v: pointer to atomic64_t
2903 * Atomically updates @v to (@v - @i) with acquire ordering.
2907 * Return: The updated value of @v.
2910 raw_atomic64_sub_return_acquire(s64 i, atomic64_t *v) in raw_atomic64_sub_return_acquire() argument
2913 return arch_atomic64_sub_return_acquire(i, v); in raw_atomic64_sub_return_acquire()
2915 s64 ret = arch_atomic64_sub_return_relaxed(i, v); in raw_atomic64_sub_return_acquire()
2919 return arch_atomic64_sub_return(i, v); in raw_atomic64_sub_return_acquire()
2928 * @v: pointer to atomic64_t
2930 * Atomically updates @v to (@v - @i) with release ordering.
2934 * Return: The updated value of @v.
2937 raw_atomic64_sub_return_release(s64 i, atomic64_t *v) in raw_atomic64_sub_return_release() argument
2940 return arch_atomic64_sub_return_release(i, v); in raw_atomic64_sub_return_release()
2943 return arch_atomic64_sub_return_relaxed(i, v); in raw_atomic64_sub_return_release()
2945 return arch_atomic64_sub_return(i, v); in raw_atomic64_sub_return_release()
2954 * @v: pointer to atomic64_t
2956 * Atomically updates @v to (@v - @i) with relaxed ordering.
2960 * Return: The updated value of @v.
2963 raw_atomic64_sub_return_relaxed(s64 i, atomic64_t *v) in raw_atomic64_sub_return_relaxed() argument
2966 return arch_atomic64_sub_return_relaxed(i, v); in raw_atomic64_sub_return_relaxed()
2968 return arch_atomic64_sub_return(i, v); in raw_atomic64_sub_return_relaxed()
2977 * @v: pointer to atomic64_t
2979 * Atomically updates @v to (@v - @i) with full ordering.
2983 * Return: The original value of @v.
2986 raw_atomic64_fetch_sub(s64 i, atomic64_t *v) in raw_atomic64_fetch_sub() argument
2989 return arch_atomic64_fetch_sub(i, v); in raw_atomic64_fetch_sub()
2993 ret = arch_atomic64_fetch_sub_relaxed(i, v); in raw_atomic64_fetch_sub()
3004 * @v: pointer to atomic64_t
3006 * Atomically updates @v to (@v - @i) with acquire ordering.
3010 * Return: The original value of @v.
3013 raw_atomic64_fetch_sub_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_sub_acquire() argument
3016 return arch_atomic64_fetch_sub_acquire(i, v); in raw_atomic64_fetch_sub_acquire()
3018 s64 ret = arch_atomic64_fetch_sub_relaxed(i, v); in raw_atomic64_fetch_sub_acquire()
3022 return arch_atomic64_fetch_sub(i, v); in raw_atomic64_fetch_sub_acquire()
3031 * @v: pointer to atomic64_t
3033 * Atomically updates @v to (@v - @i) with release ordering.
3037 * Return: The original value of @v.
3040 raw_atomic64_fetch_sub_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_sub_release() argument
3043 return arch_atomic64_fetch_sub_release(i, v); in raw_atomic64_fetch_sub_release()
3046 return arch_atomic64_fetch_sub_relaxed(i, v); in raw_atomic64_fetch_sub_release()
3048 return arch_atomic64_fetch_sub(i, v); in raw_atomic64_fetch_sub_release()
3057 * @v: pointer to atomic64_t
3059 * Atomically updates @v to (@v - @i) with relaxed ordering.
3063 * Return: The original value of @v.
3066 raw_atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_sub_relaxed() argument
3069 return arch_atomic64_fetch_sub_relaxed(i, v); in raw_atomic64_fetch_sub_relaxed()
3071 return arch_atomic64_fetch_sub(i, v); in raw_atomic64_fetch_sub_relaxed()
3079 * @v: pointer to atomic64_t
3081 * Atomically updates @v to (@v + 1) with relaxed ordering.
3088 raw_atomic64_inc(atomic64_t *v) in raw_atomic64_inc() argument
3091 arch_atomic64_inc(v); in raw_atomic64_inc()
3093 raw_atomic64_add(1, v); in raw_atomic64_inc()
3099 * @v: pointer to atomic64_t
3101 * Atomically updates @v to (@v + 1) with full ordering.
3105 * Return: The updated value of @v.
3108 raw_atomic64_inc_return(atomic64_t *v) in raw_atomic64_inc_return() argument
3111 return arch_atomic64_inc_return(v); in raw_atomic64_inc_return()
3115 ret = arch_atomic64_inc_return_relaxed(v); in raw_atomic64_inc_return()
3119 return raw_atomic64_add_return(1, v); in raw_atomic64_inc_return()
3125 * @v: pointer to atomic64_t
3127 * Atomically updates @v to (@v + 1) with acquire ordering.
3131 * Return: The updated value of @v.
3134 raw_atomic64_inc_return_acquire(atomic64_t *v) in raw_atomic64_inc_return_acquire() argument
3137 return arch_atomic64_inc_return_acquire(v); in raw_atomic64_inc_return_acquire()
3139 s64 ret = arch_atomic64_inc_return_relaxed(v); in raw_atomic64_inc_return_acquire()
3143 return arch_atomic64_inc_return(v); in raw_atomic64_inc_return_acquire()
3145 return raw_atomic64_add_return_acquire(1, v); in raw_atomic64_inc_return_acquire()
3151 * @v: pointer to atomic64_t
3153 * Atomically updates @v to (@v + 1) with release ordering.
3157 * Return: The updated value of @v.
3160 raw_atomic64_inc_return_release(atomic64_t *v) in raw_atomic64_inc_return_release() argument
3163 return arch_atomic64_inc_return_release(v); in raw_atomic64_inc_return_release()
3166 return arch_atomic64_inc_return_relaxed(v); in raw_atomic64_inc_return_release()
3168 return arch_atomic64_inc_return(v); in raw_atomic64_inc_return_release()
3170 return raw_atomic64_add_return_release(1, v); in raw_atomic64_inc_return_release()
3176 * @v: pointer to atomic64_t
3178 * Atomically updates @v to (@v + 1) with relaxed ordering.
3182 * Return: The updated value of @v.
3185 raw_atomic64_inc_return_relaxed(atomic64_t *v) in raw_atomic64_inc_return_relaxed() argument
3188 return arch_atomic64_inc_return_relaxed(v); in raw_atomic64_inc_return_relaxed()
3190 return arch_atomic64_inc_return(v); in raw_atomic64_inc_return_relaxed()
3192 return raw_atomic64_add_return_relaxed(1, v); in raw_atomic64_inc_return_relaxed()
3198 * @v: pointer to atomic64_t
3200 * Atomically updates @v to (@v + 1) with full ordering.
3204 * Return: The original value of @v.
3207 raw_atomic64_fetch_inc(atomic64_t *v) in raw_atomic64_fetch_inc() argument
3210 return arch_atomic64_fetch_inc(v); in raw_atomic64_fetch_inc()
3214 ret = arch_atomic64_fetch_inc_relaxed(v); in raw_atomic64_fetch_inc()
3218 return raw_atomic64_fetch_add(1, v); in raw_atomic64_fetch_inc()
3224 * @v: pointer to atomic64_t
3226 * Atomically updates @v to (@v + 1) with acquire ordering.
3230 * Return: The original value of @v.
3233 raw_atomic64_fetch_inc_acquire(atomic64_t *v) in raw_atomic64_fetch_inc_acquire() argument
3236 return arch_atomic64_fetch_inc_acquire(v); in raw_atomic64_fetch_inc_acquire()
3238 s64 ret = arch_atomic64_fetch_inc_relaxed(v); in raw_atomic64_fetch_inc_acquire()
3242 return arch_atomic64_fetch_inc(v); in raw_atomic64_fetch_inc_acquire()
3244 return raw_atomic64_fetch_add_acquire(1, v); in raw_atomic64_fetch_inc_acquire()
3250 * @v: pointer to atomic64_t
3252 * Atomically updates @v to (@v + 1) with release ordering.
3256 * Return: The original value of @v.
3259 raw_atomic64_fetch_inc_release(atomic64_t *v) in raw_atomic64_fetch_inc_release() argument
3262 return arch_atomic64_fetch_inc_release(v); in raw_atomic64_fetch_inc_release()
3265 return arch_atomic64_fetch_inc_relaxed(v); in raw_atomic64_fetch_inc_release()
3267 return arch_atomic64_fetch_inc(v); in raw_atomic64_fetch_inc_release()
3269 return raw_atomic64_fetch_add_release(1, v); in raw_atomic64_fetch_inc_release()
3275 * @v: pointer to atomic64_t
3277 * Atomically updates @v to (@v + 1) with relaxed ordering.
3281 * Return: The original value of @v.
3284 raw_atomic64_fetch_inc_relaxed(atomic64_t *v) in raw_atomic64_fetch_inc_relaxed() argument
3287 return arch_atomic64_fetch_inc_relaxed(v); in raw_atomic64_fetch_inc_relaxed()
3289 return arch_atomic64_fetch_inc(v); in raw_atomic64_fetch_inc_relaxed()
3291 return raw_atomic64_fetch_add_relaxed(1, v); in raw_atomic64_fetch_inc_relaxed()
3297 * @v: pointer to atomic64_t
3299 * Atomically updates @v to (@v - 1) with relaxed ordering.
3306 raw_atomic64_dec(atomic64_t *v) in raw_atomic64_dec() argument
3309 arch_atomic64_dec(v); in raw_atomic64_dec()
3311 raw_atomic64_sub(1, v); in raw_atomic64_dec()
3317 * @v: pointer to atomic64_t
3319 * Atomically updates @v to (@v - 1) with full ordering.
3323 * Return: The updated value of @v.
3326 raw_atomic64_dec_return(atomic64_t *v) in raw_atomic64_dec_return() argument
3329 return arch_atomic64_dec_return(v); in raw_atomic64_dec_return()
3333 ret = arch_atomic64_dec_return_relaxed(v); in raw_atomic64_dec_return()
3337 return raw_atomic64_sub_return(1, v); in raw_atomic64_dec_return()
3343 * @v: pointer to atomic64_t
3345 * Atomically updates @v to (@v - 1) with acquire ordering.
3349 * Return: The updated value of @v.
3352 raw_atomic64_dec_return_acquire(atomic64_t *v) in raw_atomic64_dec_return_acquire() argument
3355 return arch_atomic64_dec_return_acquire(v); in raw_atomic64_dec_return_acquire()
3357 s64 ret = arch_atomic64_dec_return_relaxed(v); in raw_atomic64_dec_return_acquire()
3361 return arch_atomic64_dec_return(v); in raw_atomic64_dec_return_acquire()
3363 return raw_atomic64_sub_return_acquire(1, v); in raw_atomic64_dec_return_acquire()
3369 * @v: pointer to atomic64_t
3371 * Atomically updates @v to (@v - 1) with release ordering.
3375 * Return: The updated value of @v.
3378 raw_atomic64_dec_return_release(atomic64_t *v) in raw_atomic64_dec_return_release() argument
3381 return arch_atomic64_dec_return_release(v); in raw_atomic64_dec_return_release()
3384 return arch_atomic64_dec_return_relaxed(v); in raw_atomic64_dec_return_release()
3386 return arch_atomic64_dec_return(v); in raw_atomic64_dec_return_release()
3388 return raw_atomic64_sub_return_release(1, v); in raw_atomic64_dec_return_release()
3394 * @v: pointer to atomic64_t
3396 * Atomically updates @v to (@v - 1) with relaxed ordering.
3400 * Return: The updated value of @v.
3403 raw_atomic64_dec_return_relaxed(atomic64_t *v) in raw_atomic64_dec_return_relaxed() argument
3406 return arch_atomic64_dec_return_relaxed(v); in raw_atomic64_dec_return_relaxed()
3408 return arch_atomic64_dec_return(v); in raw_atomic64_dec_return_relaxed()
3410 return raw_atomic64_sub_return_relaxed(1, v); in raw_atomic64_dec_return_relaxed()
3416 * @v: pointer to atomic64_t
3418 * Atomically updates @v to (@v - 1) with full ordering.
3422 * Return: The original value of @v.
3425 raw_atomic64_fetch_dec(atomic64_t *v) in raw_atomic64_fetch_dec() argument
3428 return arch_atomic64_fetch_dec(v); in raw_atomic64_fetch_dec()
3432 ret = arch_atomic64_fetch_dec_relaxed(v); in raw_atomic64_fetch_dec()
3436 return raw_atomic64_fetch_sub(1, v); in raw_atomic64_fetch_dec()
3442 * @v: pointer to atomic64_t
3444 * Atomically updates @v to (@v - 1) with acquire ordering.
3448 * Return: The original value of @v.
3451 raw_atomic64_fetch_dec_acquire(atomic64_t *v) in raw_atomic64_fetch_dec_acquire() argument
3454 return arch_atomic64_fetch_dec_acquire(v); in raw_atomic64_fetch_dec_acquire()
3456 s64 ret = arch_atomic64_fetch_dec_relaxed(v); in raw_atomic64_fetch_dec_acquire()
3460 return arch_atomic64_fetch_dec(v); in raw_atomic64_fetch_dec_acquire()
3462 return raw_atomic64_fetch_sub_acquire(1, v); in raw_atomic64_fetch_dec_acquire()
3468 * @v: pointer to atomic64_t
3470 * Atomically updates @v to (@v - 1) with release ordering.
3474 * Return: The original value of @v.
3477 raw_atomic64_fetch_dec_release(atomic64_t *v) in raw_atomic64_fetch_dec_release() argument
3480 return arch_atomic64_fetch_dec_release(v); in raw_atomic64_fetch_dec_release()
3483 return arch_atomic64_fetch_dec_relaxed(v); in raw_atomic64_fetch_dec_release()
3485 return arch_atomic64_fetch_dec(v); in raw_atomic64_fetch_dec_release()
3487 return raw_atomic64_fetch_sub_release(1, v); in raw_atomic64_fetch_dec_release()
3493 * @v: pointer to atomic64_t
3495 * Atomically updates @v to (@v - 1) with relaxed ordering.
3499 * Return: The original value of @v.
3502 raw_atomic64_fetch_dec_relaxed(atomic64_t *v) in raw_atomic64_fetch_dec_relaxed() argument
3505 return arch_atomic64_fetch_dec_relaxed(v); in raw_atomic64_fetch_dec_relaxed()
3507 return arch_atomic64_fetch_dec(v); in raw_atomic64_fetch_dec_relaxed()
3509 return raw_atomic64_fetch_sub_relaxed(1, v); in raw_atomic64_fetch_dec_relaxed()
3516 * @v: pointer to atomic64_t
3518 * Atomically updates @v to (@v & @i) with relaxed ordering.
3525 raw_atomic64_and(s64 i, atomic64_t *v) in raw_atomic64_and() argument
3527 arch_atomic64_and(i, v); in raw_atomic64_and()
3533 * @v: pointer to atomic64_t
3535 * Atomically updates @v to (@v & @i) with full ordering.
3539 * Return: The original value of @v.
3542 raw_atomic64_fetch_and(s64 i, atomic64_t *v) in raw_atomic64_fetch_and() argument
3545 return arch_atomic64_fetch_and(i, v); in raw_atomic64_fetch_and()
3549 ret = arch_atomic64_fetch_and_relaxed(i, v); in raw_atomic64_fetch_and()
3560 * @v: pointer to atomic64_t
3562 * Atomically updates @v to (@v & @i) with acquire ordering.
3566 * Return: The original value of @v.
3569 raw_atomic64_fetch_and_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_and_acquire() argument
3572 return arch_atomic64_fetch_and_acquire(i, v); in raw_atomic64_fetch_and_acquire()
3574 s64 ret = arch_atomic64_fetch_and_relaxed(i, v); in raw_atomic64_fetch_and_acquire()
3578 return arch_atomic64_fetch_and(i, v); in raw_atomic64_fetch_and_acquire()
3587 * @v: pointer to atomic64_t
3589 * Atomically updates @v to (@v & @i) with release ordering.
3593 * Return: The original value of @v.
3596 raw_atomic64_fetch_and_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_and_release() argument
3599 return arch_atomic64_fetch_and_release(i, v); in raw_atomic64_fetch_and_release()
3602 return arch_atomic64_fetch_and_relaxed(i, v); in raw_atomic64_fetch_and_release()
3604 return arch_atomic64_fetch_and(i, v); in raw_atomic64_fetch_and_release()
3613 * @v: pointer to atomic64_t
3615 * Atomically updates @v to (@v & @i) with relaxed ordering.
3619 * Return: The original value of @v.
3622 raw_atomic64_fetch_and_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_and_relaxed() argument
3625 return arch_atomic64_fetch_and_relaxed(i, v); in raw_atomic64_fetch_and_relaxed()
3627 return arch_atomic64_fetch_and(i, v); in raw_atomic64_fetch_and_relaxed()
3636 * @v: pointer to atomic64_t
3638 * Atomically updates @v to (@v & ~@i) with relaxed ordering.
3645 raw_atomic64_andnot(s64 i, atomic64_t *v) in raw_atomic64_andnot() argument
3648 arch_atomic64_andnot(i, v); in raw_atomic64_andnot()
3650 raw_atomic64_and(~i, v); in raw_atomic64_andnot()
3657 * @v: pointer to atomic64_t
3659 * Atomically updates @v to (@v & ~@i) with full ordering.
3663 * Return: The original value of @v.
3666 raw_atomic64_fetch_andnot(s64 i, atomic64_t *v) in raw_atomic64_fetch_andnot() argument
3669 return arch_atomic64_fetch_andnot(i, v); in raw_atomic64_fetch_andnot()
3673 ret = arch_atomic64_fetch_andnot_relaxed(i, v); in raw_atomic64_fetch_andnot()
3677 return raw_atomic64_fetch_and(~i, v); in raw_atomic64_fetch_andnot()
3684 * @v: pointer to atomic64_t
3686 * Atomically updates @v to (@v & ~@i) with acquire ordering.
3690 * Return: The original value of @v.
3693 raw_atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_andnot_acquire() argument
3696 return arch_atomic64_fetch_andnot_acquire(i, v); in raw_atomic64_fetch_andnot_acquire()
3698 s64 ret = arch_atomic64_fetch_andnot_relaxed(i, v); in raw_atomic64_fetch_andnot_acquire()
3702 return arch_atomic64_fetch_andnot(i, v); in raw_atomic64_fetch_andnot_acquire()
3704 return raw_atomic64_fetch_and_acquire(~i, v); in raw_atomic64_fetch_andnot_acquire()
3711 * @v: pointer to atomic64_t
3713 * Atomically updates @v to (@v & ~@i) with release ordering.
3717 * Return: The original value of @v.
3720 raw_atomic64_fetch_andnot_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_andnot_release() argument
3723 return arch_atomic64_fetch_andnot_release(i, v); in raw_atomic64_fetch_andnot_release()
3726 return arch_atomic64_fetch_andnot_relaxed(i, v); in raw_atomic64_fetch_andnot_release()
3728 return arch_atomic64_fetch_andnot(i, v); in raw_atomic64_fetch_andnot_release()
3730 return raw_atomic64_fetch_and_release(~i, v); in raw_atomic64_fetch_andnot_release()
3737 * @v: pointer to atomic64_t
3739 * Atomically updates @v to (@v & ~@i) with relaxed ordering.
3743 * Return: The original value of @v.
3746 raw_atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_andnot_relaxed() argument
3749 return arch_atomic64_fetch_andnot_relaxed(i, v); in raw_atomic64_fetch_andnot_relaxed()
3751 return arch_atomic64_fetch_andnot(i, v); in raw_atomic64_fetch_andnot_relaxed()
3753 return raw_atomic64_fetch_and_relaxed(~i, v); in raw_atomic64_fetch_andnot_relaxed()
3760 * @v: pointer to atomic64_t
3762 * Atomically updates @v to (@v | @i) with relaxed ordering.
3769 raw_atomic64_or(s64 i, atomic64_t *v) in raw_atomic64_or() argument
3771 arch_atomic64_or(i, v); in raw_atomic64_or()
3777 * @v: pointer to atomic64_t
3779 * Atomically updates @v to (@v | @i) with full ordering.
3783 * Return: The original value of @v.
3786 raw_atomic64_fetch_or(s64 i, atomic64_t *v) in raw_atomic64_fetch_or() argument
3789 return arch_atomic64_fetch_or(i, v); in raw_atomic64_fetch_or()
3793 ret = arch_atomic64_fetch_or_relaxed(i, v); in raw_atomic64_fetch_or()
3804 * @v: pointer to atomic64_t
3806 * Atomically updates @v to (@v | @i) with acquire ordering.
3810 * Return: The original value of @v.
3813 raw_atomic64_fetch_or_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_or_acquire() argument
3816 return arch_atomic64_fetch_or_acquire(i, v); in raw_atomic64_fetch_or_acquire()
3818 s64 ret = arch_atomic64_fetch_or_relaxed(i, v); in raw_atomic64_fetch_or_acquire()
3822 return arch_atomic64_fetch_or(i, v); in raw_atomic64_fetch_or_acquire()
3831 * @v: pointer to atomic64_t
3833 * Atomically updates @v to (@v | @i) with release ordering.
3837 * Return: The original value of @v.
3840 raw_atomic64_fetch_or_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_or_release() argument
3843 return arch_atomic64_fetch_or_release(i, v); in raw_atomic64_fetch_or_release()
3846 return arch_atomic64_fetch_or_relaxed(i, v); in raw_atomic64_fetch_or_release()
3848 return arch_atomic64_fetch_or(i, v); in raw_atomic64_fetch_or_release()
3857 * @v: pointer to atomic64_t
3859 * Atomically updates @v to (@v | @i) with relaxed ordering.
3863 * Return: The original value of @v.
3866 raw_atomic64_fetch_or_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_or_relaxed() argument
3869 return arch_atomic64_fetch_or_relaxed(i, v); in raw_atomic64_fetch_or_relaxed()
3871 return arch_atomic64_fetch_or(i, v); in raw_atomic64_fetch_or_relaxed()
3880 * @v: pointer to atomic64_t
3882 * Atomically updates @v to (@v ^ @i) with relaxed ordering.
3889 raw_atomic64_xor(s64 i, atomic64_t *v) in raw_atomic64_xor() argument
3891 arch_atomic64_xor(i, v); in raw_atomic64_xor()
3897 * @v: pointer to atomic64_t
3899 * Atomically updates @v to (@v ^ @i) with full ordering.
3903 * Return: The original value of @v.
3906 raw_atomic64_fetch_xor(s64 i, atomic64_t *v) in raw_atomic64_fetch_xor() argument
3909 return arch_atomic64_fetch_xor(i, v); in raw_atomic64_fetch_xor()
3913 ret = arch_atomic64_fetch_xor_relaxed(i, v); in raw_atomic64_fetch_xor()
3924 * @v: pointer to atomic64_t
3926 * Atomically updates @v to (@v ^ @i) with acquire ordering.
3930 * Return: The original value of @v.
3933 raw_atomic64_fetch_xor_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_xor_acquire() argument
3936 return arch_atomic64_fetch_xor_acquire(i, v); in raw_atomic64_fetch_xor_acquire()
3938 s64 ret = arch_atomic64_fetch_xor_relaxed(i, v); in raw_atomic64_fetch_xor_acquire()
3942 return arch_atomic64_fetch_xor(i, v); in raw_atomic64_fetch_xor_acquire()
3951 * @v: pointer to atomic64_t
3953 * Atomically updates @v to (@v ^ @i) with release ordering.
3957 * Return: The original value of @v.
3960 raw_atomic64_fetch_xor_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_xor_release() argument
3963 return arch_atomic64_fetch_xor_release(i, v); in raw_atomic64_fetch_xor_release()
3966 return arch_atomic64_fetch_xor_relaxed(i, v); in raw_atomic64_fetch_xor_release()
3968 return arch_atomic64_fetch_xor(i, v); in raw_atomic64_fetch_xor_release()
3977 * @v: pointer to atomic64_t
3979 * Atomically updates @v to (@v ^ @i) with relaxed ordering.
3983 * Return: The original value of @v.
3986 raw_atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_xor_relaxed() argument
3989 return arch_atomic64_fetch_xor_relaxed(i, v); in raw_atomic64_fetch_xor_relaxed()
3991 return arch_atomic64_fetch_xor(i, v); in raw_atomic64_fetch_xor_relaxed()
3999 * @v: pointer to atomic64_t
4002 * Atomically updates @v to @new with full ordering.
4006 * Return: The original value of @v.
4009 raw_atomic64_xchg(atomic64_t *v, s64 new) in raw_atomic64_xchg() argument
4012 return arch_atomic64_xchg(v, new); in raw_atomic64_xchg()
4016 ret = arch_atomic64_xchg_relaxed(v, new); in raw_atomic64_xchg()
4020 return raw_xchg(&v->counter, new); in raw_atomic64_xchg()
4026 * @v: pointer to atomic64_t
4029 * Atomically updates @v to @new with acquire ordering.
4033 * Return: The original value of @v.
4036 raw_atomic64_xchg_acquire(atomic64_t *v, s64 new) in raw_atomic64_xchg_acquire() argument
4039 return arch_atomic64_xchg_acquire(v, new); in raw_atomic64_xchg_acquire()
4041 s64 ret = arch_atomic64_xchg_relaxed(v, new); in raw_atomic64_xchg_acquire()
4045 return arch_atomic64_xchg(v, new); in raw_atomic64_xchg_acquire()
4047 return raw_xchg_acquire(&v->counter, new); in raw_atomic64_xchg_acquire()
4053 * @v: pointer to atomic64_t
4056 * Atomically updates @v to @new with release ordering.
4060 * Return: The original value of @v.
4063 raw_atomic64_xchg_release(atomic64_t *v, s64 new) in raw_atomic64_xchg_release() argument
4066 return arch_atomic64_xchg_release(v, new); in raw_atomic64_xchg_release()
4069 return arch_atomic64_xchg_relaxed(v, new); in raw_atomic64_xchg_release()
4071 return arch_atomic64_xchg(v, new); in raw_atomic64_xchg_release()
4073 return raw_xchg_release(&v->counter, new); in raw_atomic64_xchg_release()
4079 * @v: pointer to atomic64_t
4082 * Atomically updates @v to @new with relaxed ordering.
4086 * Return: The original value of @v.
4089 raw_atomic64_xchg_relaxed(atomic64_t *v, s64 new) in raw_atomic64_xchg_relaxed() argument
4092 return arch_atomic64_xchg_relaxed(v, new); in raw_atomic64_xchg_relaxed()
4094 return arch_atomic64_xchg(v, new); in raw_atomic64_xchg_relaxed()
4096 return raw_xchg_relaxed(&v->counter, new); in raw_atomic64_xchg_relaxed()
4102 * @v: pointer to atomic64_t
4106 * If (@v == @old), atomically updates @v to @new with full ordering.
4110 * Return: The original value of @v.
4113 raw_atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) in raw_atomic64_cmpxchg() argument
4116 return arch_atomic64_cmpxchg(v, old, new); in raw_atomic64_cmpxchg()
4120 ret = arch_atomic64_cmpxchg_relaxed(v, old, new); in raw_atomic64_cmpxchg()
4124 return raw_cmpxchg(&v->counter, old, new); in raw_atomic64_cmpxchg()
4130 * @v: pointer to atomic64_t
4134 * If (@v == @old), atomically updates @v to @new with acquire ordering.
4138 * Return: The original value of @v.
4141 raw_atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new) in raw_atomic64_cmpxchg_acquire() argument
4144 return arch_atomic64_cmpxchg_acquire(v, old, new); in raw_atomic64_cmpxchg_acquire()
4146 s64 ret = arch_atomic64_cmpxchg_relaxed(v, old, new); in raw_atomic64_cmpxchg_acquire()
4150 return arch_atomic64_cmpxchg(v, old, new); in raw_atomic64_cmpxchg_acquire()
4152 return raw_cmpxchg_acquire(&v->counter, old, new); in raw_atomic64_cmpxchg_acquire()
4158 * @v: pointer to atomic64_t
4162 * If (@v == @old), atomically updates @v to @new with release ordering.
4166 * Return: The original value of @v.
4169 raw_atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new) in raw_atomic64_cmpxchg_release() argument
4172 return arch_atomic64_cmpxchg_release(v, old, new); in raw_atomic64_cmpxchg_release()
4175 return arch_atomic64_cmpxchg_relaxed(v, old, new); in raw_atomic64_cmpxchg_release()
4177 return arch_atomic64_cmpxchg(v, old, new); in raw_atomic64_cmpxchg_release()
4179 return raw_cmpxchg_release(&v->counter, old, new); in raw_atomic64_cmpxchg_release()
4185 * @v: pointer to atomic64_t
4189 * If (@v == @old), atomically updates @v to @new with relaxed ordering.
4193 * Return: The original value of @v.
4196 raw_atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new) in raw_atomic64_cmpxchg_relaxed() argument
4199 return arch_atomic64_cmpxchg_relaxed(v, old, new); in raw_atomic64_cmpxchg_relaxed()
4201 return arch_atomic64_cmpxchg(v, old, new); in raw_atomic64_cmpxchg_relaxed()
4203 return raw_cmpxchg_relaxed(&v->counter, old, new); in raw_atomic64_cmpxchg_relaxed()
4209 * @v: pointer to atomic64_t
4213 * If (@v == @old), atomically updates @v to @new with full ordering.
4214 * Otherwise, updates @old to the current value of @v.
4221 raw_atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) in raw_atomic64_try_cmpxchg() argument
4224 return arch_atomic64_try_cmpxchg(v, old, new); in raw_atomic64_try_cmpxchg()
4228 ret = arch_atomic64_try_cmpxchg_relaxed(v, old, new); in raw_atomic64_try_cmpxchg()
4233 r = raw_atomic64_cmpxchg(v, o, new); in raw_atomic64_try_cmpxchg()
4242 * @v: pointer to atomic64_t
4246 * If (@v == @old), atomically updates @v to @new with acquire ordering.
4247 * Otherwise, updates @old to the current value of @v.
4254 raw_atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new) in raw_atomic64_try_cmpxchg_acquire() argument
4257 return arch_atomic64_try_cmpxchg_acquire(v, old, new); in raw_atomic64_try_cmpxchg_acquire()
4259 bool ret = arch_atomic64_try_cmpxchg_relaxed(v, old, new); in raw_atomic64_try_cmpxchg_acquire()
4263 return arch_atomic64_try_cmpxchg(v, old, new); in raw_atomic64_try_cmpxchg_acquire()
4266 r = raw_atomic64_cmpxchg_acquire(v, o, new); in raw_atomic64_try_cmpxchg_acquire()
4275 * @v: pointer to atomic64_t
4279 * If (@v == @old), atomically updates @v to @new with release ordering.
4280 * Otherwise, updates @old to the current value of @v.
4287 raw_atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new) in raw_atomic64_try_cmpxchg_release() argument
4290 return arch_atomic64_try_cmpxchg_release(v, old, new); in raw_atomic64_try_cmpxchg_release()
4293 return arch_atomic64_try_cmpxchg_relaxed(v, old, new); in raw_atomic64_try_cmpxchg_release()
4295 return arch_atomic64_try_cmpxchg(v, old, new); in raw_atomic64_try_cmpxchg_release()
4298 r = raw_atomic64_cmpxchg_release(v, o, new); in raw_atomic64_try_cmpxchg_release()
4307 * @v: pointer to atomic64_t
4311 * If (@v == @old), atomically updates @v to @new with relaxed ordering.
4312 * Otherwise, updates @old to the current value of @v.
4319 raw_atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new) in raw_atomic64_try_cmpxchg_relaxed() argument
4322 return arch_atomic64_try_cmpxchg_relaxed(v, old, new); in raw_atomic64_try_cmpxchg_relaxed()
4324 return arch_atomic64_try_cmpxchg(v, old, new); in raw_atomic64_try_cmpxchg_relaxed()
4327 r = raw_atomic64_cmpxchg_relaxed(v, o, new); in raw_atomic64_try_cmpxchg_relaxed()
4337 * @v: pointer to atomic64_t
4339 * Atomically updates @v to (@v - @i) with full ordering.
4343 * Return: @true if the resulting value of @v is zero, @false otherwise.
4346 raw_atomic64_sub_and_test(s64 i, atomic64_t *v) in raw_atomic64_sub_and_test() argument
4349 return arch_atomic64_sub_and_test(i, v); in raw_atomic64_sub_and_test()
4351 return raw_atomic64_sub_return(i, v) == 0; in raw_atomic64_sub_and_test()
4357 * @v: pointer to atomic64_t
4359 * Atomically updates @v to (@v - 1) with full ordering.
4363 * Return: @true if the resulting value of @v is zero, @false otherwise.
4366 raw_atomic64_dec_and_test(atomic64_t *v) in raw_atomic64_dec_and_test() argument
4369 return arch_atomic64_dec_and_test(v); in raw_atomic64_dec_and_test()
4371 return raw_atomic64_dec_return(v) == 0; in raw_atomic64_dec_and_test()
4377 * @v: pointer to atomic64_t
4379 * Atomically updates @v to (@v + 1) with full ordering.
4383 * Return: @true if the resulting value of @v is zero, @false otherwise.
4386 raw_atomic64_inc_and_test(atomic64_t *v) in raw_atomic64_inc_and_test() argument
4389 return arch_atomic64_inc_and_test(v); in raw_atomic64_inc_and_test()
4391 return raw_atomic64_inc_return(v) == 0; in raw_atomic64_inc_and_test()
4398 * @v: pointer to atomic64_t
4400 * Atomically updates @v to (@v + @i) with full ordering.
4404 * Return: @true if the resulting value of @v is negative, @false otherwise.
4407 raw_atomic64_add_negative(s64 i, atomic64_t *v) in raw_atomic64_add_negative() argument
4410 return arch_atomic64_add_negative(i, v); in raw_atomic64_add_negative()
4414 ret = arch_atomic64_add_negative_relaxed(i, v); in raw_atomic64_add_negative()
4418 return raw_atomic64_add_return(i, v) < 0; in raw_atomic64_add_negative()
4425 * @v: pointer to atomic64_t
4427 * Atomically updates @v to (@v + @i) with acquire ordering.
4431 * Return: @true if the resulting value of @v is negative, @false otherwise.
4434 raw_atomic64_add_negative_acquire(s64 i, atomic64_t *v) in raw_atomic64_add_negative_acquire() argument
4437 return arch_atomic64_add_negative_acquire(i, v); in raw_atomic64_add_negative_acquire()
4439 bool ret = arch_atomic64_add_negative_relaxed(i, v); in raw_atomic64_add_negative_acquire()
4443 return arch_atomic64_add_negative(i, v); in raw_atomic64_add_negative_acquire()
4445 return raw_atomic64_add_return_acquire(i, v) < 0; in raw_atomic64_add_negative_acquire()
4452 * @v: pointer to atomic64_t
4454 * Atomically updates @v to (@v + @i) with release ordering.
4458 * Return: @true if the resulting value of @v is negative, @false otherwise.
4461 raw_atomic64_add_negative_release(s64 i, atomic64_t *v) in raw_atomic64_add_negative_release() argument
4464 return arch_atomic64_add_negative_release(i, v); in raw_atomic64_add_negative_release()
4467 return arch_atomic64_add_negative_relaxed(i, v); in raw_atomic64_add_negative_release()
4469 return arch_atomic64_add_negative(i, v); in raw_atomic64_add_negative_release()
4471 return raw_atomic64_add_return_release(i, v) < 0; in raw_atomic64_add_negative_release()
4478 * @v: pointer to atomic64_t
4480 * Atomically updates @v to (@v + @i) with relaxed ordering.
4484 * Return: @true if the resulting value of @v is negative, @false otherwise.
4487 raw_atomic64_add_negative_relaxed(s64 i, atomic64_t *v) in raw_atomic64_add_negative_relaxed() argument
4490 return arch_atomic64_add_negative_relaxed(i, v); in raw_atomic64_add_negative_relaxed()
4492 return arch_atomic64_add_negative(i, v); in raw_atomic64_add_negative_relaxed()
4494 return raw_atomic64_add_return_relaxed(i, v) < 0; in raw_atomic64_add_negative_relaxed()
4500 * @v: pointer to atomic64_t
4504 * If (@v != @u), atomically updates @v to (@v + @a) with full ordering.
4508 * Return: The original value of @v.
4511 raw_atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u) in raw_atomic64_fetch_add_unless() argument
4514 return arch_atomic64_fetch_add_unless(v, a, u); in raw_atomic64_fetch_add_unless()
4516 s64 c = raw_atomic64_read(v); in raw_atomic64_fetch_add_unless()
4521 } while (!raw_atomic64_try_cmpxchg(v, &c, c + a)); in raw_atomic64_fetch_add_unless()
4529 * @v: pointer to atomic64_t
4533 * If (@v != @u), atomically updates @v to (@v + @a) with full ordering.
4537 * Return: @true if @v was updated, @false otherwise.
4540 raw_atomic64_add_unless(atomic64_t *v, s64 a, s64 u) in raw_atomic64_add_unless() argument
4543 return arch_atomic64_add_unless(v, a, u); in raw_atomic64_add_unless()
4545 return raw_atomic64_fetch_add_unless(v, a, u) != u; in raw_atomic64_add_unless()
4551 * @v: pointer to atomic64_t
4553 * If (@v != 0), atomically updates @v to (@v + 1) with full ordering.
4557 * Return: @true if @v was updated, @false otherwise.
4560 raw_atomic64_inc_not_zero(atomic64_t *v) in raw_atomic64_inc_not_zero() argument
4563 return arch_atomic64_inc_not_zero(v); in raw_atomic64_inc_not_zero()
4565 return raw_atomic64_add_unless(v, 1, 0); in raw_atomic64_inc_not_zero()
4571 * @v: pointer to atomic64_t
4573 * If (@v >= 0), atomically updates @v to (@v + 1) with full ordering.
4577 * Return: @true if @v was updated, @false otherwise.
4580 raw_atomic64_inc_unless_negative(atomic64_t *v) in raw_atomic64_inc_unless_negative() argument
4583 return arch_atomic64_inc_unless_negative(v); in raw_atomic64_inc_unless_negative()
4585 s64 c = raw_atomic64_read(v); in raw_atomic64_inc_unless_negative()
4590 } while (!raw_atomic64_try_cmpxchg(v, &c, c + 1)); in raw_atomic64_inc_unless_negative()
4598 * @v: pointer to atomic64_t
4600 * If (@v <= 0), atomically updates @v to (@v - 1) with full ordering.
4604 * Return: @true if @v was updated, @false otherwise.
4607 raw_atomic64_dec_unless_positive(atomic64_t *v) in raw_atomic64_dec_unless_positive() argument
4610 return arch_atomic64_dec_unless_positive(v); in raw_atomic64_dec_unless_positive()
4612 s64 c = raw_atomic64_read(v); in raw_atomic64_dec_unless_positive()
4617 } while (!raw_atomic64_try_cmpxchg(v, &c, c - 1)); in raw_atomic64_dec_unless_positive()
4625 * @v: pointer to atomic64_t
4627 * If (@v > 0), atomically updates @v to (@v - 1) with full ordering.
4631 * Return: The old value of (@v - 1), regardless of whether @v was updated.
4634 raw_atomic64_dec_if_positive(atomic64_t *v) in raw_atomic64_dec_if_positive() argument
4637 return arch_atomic64_dec_if_positive(v); in raw_atomic64_dec_if_positive()
4639 s64 dec, c = raw_atomic64_read(v); in raw_atomic64_dec_if_positive()
4645 } while (!raw_atomic64_try_cmpxchg(v, &c, dec)); in raw_atomic64_dec_if_positive()