Lines Matching full:v
446 * @v: pointer to atomic_t
448 * Atomically loads the value of @v with relaxed ordering.
452 * Return: The value loaded from @v.
455 raw_atomic_read(const atomic_t *v) in raw_atomic_read() argument
457 return arch_atomic_read(v); in raw_atomic_read()
462 * @v: pointer to atomic_t
464 * Atomically loads the value of @v with acquire ordering.
468 * Return: The value loaded from @v.
471 raw_atomic_read_acquire(const atomic_t *v) in raw_atomic_read_acquire() argument
474 return arch_atomic_read_acquire(v); in raw_atomic_read_acquire()
479 ret = smp_load_acquire(&(v)->counter); in raw_atomic_read_acquire()
481 ret = raw_atomic_read(v); in raw_atomic_read_acquire()
491 * @v: pointer to atomic_t
494 * Atomically sets @v to @i with relaxed ordering.
501 raw_atomic_set(atomic_t *v, int i) in raw_atomic_set() argument
503 arch_atomic_set(v, i); in raw_atomic_set()
508 * @v: pointer to atomic_t
511 * Atomically sets @v to @i with release ordering.
518 raw_atomic_set_release(atomic_t *v, int i) in raw_atomic_set_release() argument
521 arch_atomic_set_release(v, i); in raw_atomic_set_release()
524 smp_store_release(&(v)->counter, i); in raw_atomic_set_release()
527 raw_atomic_set(v, i); in raw_atomic_set_release()
535 * @v: pointer to atomic_t
537 * Atomically updates @v to (@v + @i) with relaxed ordering.
544 raw_atomic_add(int i, atomic_t *v) in raw_atomic_add() argument
546 arch_atomic_add(i, v); in raw_atomic_add()
552 * @v: pointer to atomic_t
554 * Atomically updates @v to (@v + @i) with full ordering.
558 * Return: The updated value of @v.
561 raw_atomic_add_return(int i, atomic_t *v) in raw_atomic_add_return() argument
564 return arch_atomic_add_return(i, v); in raw_atomic_add_return()
568 ret = arch_atomic_add_return_relaxed(i, v); in raw_atomic_add_return()
579 * @v: pointer to atomic_t
581 * Atomically updates @v to (@v + @i) with acquire ordering.
585 * Return: The updated value of @v.
588 raw_atomic_add_return_acquire(int i, atomic_t *v) in raw_atomic_add_return_acquire() argument
591 return arch_atomic_add_return_acquire(i, v); in raw_atomic_add_return_acquire()
593 int ret = arch_atomic_add_return_relaxed(i, v); in raw_atomic_add_return_acquire()
597 return arch_atomic_add_return(i, v); in raw_atomic_add_return_acquire()
606 * @v: pointer to atomic_t
608 * Atomically updates @v to (@v + @i) with release ordering.
612 * Return: The updated value of @v.
615 raw_atomic_add_return_release(int i, atomic_t *v) in raw_atomic_add_return_release() argument
618 return arch_atomic_add_return_release(i, v); in raw_atomic_add_return_release()
621 return arch_atomic_add_return_relaxed(i, v); in raw_atomic_add_return_release()
623 return arch_atomic_add_return(i, v); in raw_atomic_add_return_release()
632 * @v: pointer to atomic_t
634 * Atomically updates @v to (@v + @i) with relaxed ordering.
638 * Return: The updated value of @v.
641 raw_atomic_add_return_relaxed(int i, atomic_t *v) in raw_atomic_add_return_relaxed() argument
644 return arch_atomic_add_return_relaxed(i, v); in raw_atomic_add_return_relaxed()
646 return arch_atomic_add_return(i, v); in raw_atomic_add_return_relaxed()
655 * @v: pointer to atomic_t
657 * Atomically updates @v to (@v + @i) with full ordering.
661 * Return: The original value of @v.
664 raw_atomic_fetch_add(int i, atomic_t *v) in raw_atomic_fetch_add() argument
667 return arch_atomic_fetch_add(i, v); in raw_atomic_fetch_add()
671 ret = arch_atomic_fetch_add_relaxed(i, v); in raw_atomic_fetch_add()
682 * @v: pointer to atomic_t
684 * Atomically updates @v to (@v + @i) with acquire ordering.
688 * Return: The original value of @v.
691 raw_atomic_fetch_add_acquire(int i, atomic_t *v) in raw_atomic_fetch_add_acquire() argument
694 return arch_atomic_fetch_add_acquire(i, v); in raw_atomic_fetch_add_acquire()
696 int ret = arch_atomic_fetch_add_relaxed(i, v); in raw_atomic_fetch_add_acquire()
700 return arch_atomic_fetch_add(i, v); in raw_atomic_fetch_add_acquire()
709 * @v: pointer to atomic_t
711 * Atomically updates @v to (@v + @i) with release ordering.
715 * Return: The original value of @v.
718 raw_atomic_fetch_add_release(int i, atomic_t *v) in raw_atomic_fetch_add_release() argument
721 return arch_atomic_fetch_add_release(i, v); in raw_atomic_fetch_add_release()
724 return arch_atomic_fetch_add_relaxed(i, v); in raw_atomic_fetch_add_release()
726 return arch_atomic_fetch_add(i, v); in raw_atomic_fetch_add_release()
735 * @v: pointer to atomic_t
737 * Atomically updates @v to (@v + @i) with relaxed ordering.
741 * Return: The original value of @v.
744 raw_atomic_fetch_add_relaxed(int i, atomic_t *v) in raw_atomic_fetch_add_relaxed() argument
747 return arch_atomic_fetch_add_relaxed(i, v); in raw_atomic_fetch_add_relaxed()
749 return arch_atomic_fetch_add(i, v); in raw_atomic_fetch_add_relaxed()
758 * @v: pointer to atomic_t
760 * Atomically updates @v to (@v - @i) with relaxed ordering.
767 raw_atomic_sub(int i, atomic_t *v) in raw_atomic_sub() argument
769 arch_atomic_sub(i, v); in raw_atomic_sub()
775 * @v: pointer to atomic_t
777 * Atomically updates @v to (@v - @i) with full ordering.
781 * Return: The updated value of @v.
784 raw_atomic_sub_return(int i, atomic_t *v) in raw_atomic_sub_return() argument
787 return arch_atomic_sub_return(i, v); in raw_atomic_sub_return()
791 ret = arch_atomic_sub_return_relaxed(i, v); in raw_atomic_sub_return()
802 * @v: pointer to atomic_t
804 * Atomically updates @v to (@v - @i) with acquire ordering.
808 * Return: The updated value of @v.
811 raw_atomic_sub_return_acquire(int i, atomic_t *v) in raw_atomic_sub_return_acquire() argument
814 return arch_atomic_sub_return_acquire(i, v); in raw_atomic_sub_return_acquire()
816 int ret = arch_atomic_sub_return_relaxed(i, v); in raw_atomic_sub_return_acquire()
820 return arch_atomic_sub_return(i, v); in raw_atomic_sub_return_acquire()
829 * @v: pointer to atomic_t
831 * Atomically updates @v to (@v - @i) with release ordering.
835 * Return: The updated value of @v.
838 raw_atomic_sub_return_release(int i, atomic_t *v) in raw_atomic_sub_return_release() argument
841 return arch_atomic_sub_return_release(i, v); in raw_atomic_sub_return_release()
844 return arch_atomic_sub_return_relaxed(i, v); in raw_atomic_sub_return_release()
846 return arch_atomic_sub_return(i, v); in raw_atomic_sub_return_release()
855 * @v: pointer to atomic_t
857 * Atomically updates @v to (@v - @i) with relaxed ordering.
861 * Return: The updated value of @v.
864 raw_atomic_sub_return_relaxed(int i, atomic_t *v) in raw_atomic_sub_return_relaxed() argument
867 return arch_atomic_sub_return_relaxed(i, v); in raw_atomic_sub_return_relaxed()
869 return arch_atomic_sub_return(i, v); in raw_atomic_sub_return_relaxed()
878 * @v: pointer to atomic_t
880 * Atomically updates @v to (@v - @i) with full ordering.
884 * Return: The original value of @v.
887 raw_atomic_fetch_sub(int i, atomic_t *v) in raw_atomic_fetch_sub() argument
890 return arch_atomic_fetch_sub(i, v); in raw_atomic_fetch_sub()
894 ret = arch_atomic_fetch_sub_relaxed(i, v); in raw_atomic_fetch_sub()
905 * @v: pointer to atomic_t
907 * Atomically updates @v to (@v - @i) with acquire ordering.
911 * Return: The original value of @v.
914 raw_atomic_fetch_sub_acquire(int i, atomic_t *v) in raw_atomic_fetch_sub_acquire() argument
917 return arch_atomic_fetch_sub_acquire(i, v); in raw_atomic_fetch_sub_acquire()
919 int ret = arch_atomic_fetch_sub_relaxed(i, v); in raw_atomic_fetch_sub_acquire()
923 return arch_atomic_fetch_sub(i, v); in raw_atomic_fetch_sub_acquire()
932 * @v: pointer to atomic_t
934 * Atomically updates @v to (@v - @i) with release ordering.
938 * Return: The original value of @v.
941 raw_atomic_fetch_sub_release(int i, atomic_t *v) in raw_atomic_fetch_sub_release() argument
944 return arch_atomic_fetch_sub_release(i, v); in raw_atomic_fetch_sub_release()
947 return arch_atomic_fetch_sub_relaxed(i, v); in raw_atomic_fetch_sub_release()
949 return arch_atomic_fetch_sub(i, v); in raw_atomic_fetch_sub_release()
958 * @v: pointer to atomic_t
960 * Atomically updates @v to (@v - @i) with relaxed ordering.
964 * Return: The original value of @v.
967 raw_atomic_fetch_sub_relaxed(int i, atomic_t *v) in raw_atomic_fetch_sub_relaxed() argument
970 return arch_atomic_fetch_sub_relaxed(i, v); in raw_atomic_fetch_sub_relaxed()
972 return arch_atomic_fetch_sub(i, v); in raw_atomic_fetch_sub_relaxed()
980 * @v: pointer to atomic_t
982 * Atomically updates @v to (@v + 1) with relaxed ordering.
989 raw_atomic_inc(atomic_t *v) in raw_atomic_inc() argument
992 arch_atomic_inc(v); in raw_atomic_inc()
994 raw_atomic_add(1, v); in raw_atomic_inc()
1000 * @v: pointer to atomic_t
1002 * Atomically updates @v to (@v + 1) with full ordering.
1006 * Return: The updated value of @v.
1009 raw_atomic_inc_return(atomic_t *v) in raw_atomic_inc_return() argument
1012 return arch_atomic_inc_return(v); in raw_atomic_inc_return()
1016 ret = arch_atomic_inc_return_relaxed(v); in raw_atomic_inc_return()
1020 return raw_atomic_add_return(1, v); in raw_atomic_inc_return()
1026 * @v: pointer to atomic_t
1028 * Atomically updates @v to (@v + 1) with acquire ordering.
1032 * Return: The updated value of @v.
1035 raw_atomic_inc_return_acquire(atomic_t *v) in raw_atomic_inc_return_acquire() argument
1038 return arch_atomic_inc_return_acquire(v); in raw_atomic_inc_return_acquire()
1040 int ret = arch_atomic_inc_return_relaxed(v); in raw_atomic_inc_return_acquire()
1044 return arch_atomic_inc_return(v); in raw_atomic_inc_return_acquire()
1046 return raw_atomic_add_return_acquire(1, v); in raw_atomic_inc_return_acquire()
1052 * @v: pointer to atomic_t
1054 * Atomically updates @v to (@v + 1) with release ordering.
1058 * Return: The updated value of @v.
1061 raw_atomic_inc_return_release(atomic_t *v) in raw_atomic_inc_return_release() argument
1064 return arch_atomic_inc_return_release(v); in raw_atomic_inc_return_release()
1067 return arch_atomic_inc_return_relaxed(v); in raw_atomic_inc_return_release()
1069 return arch_atomic_inc_return(v); in raw_atomic_inc_return_release()
1071 return raw_atomic_add_return_release(1, v); in raw_atomic_inc_return_release()
1077 * @v: pointer to atomic_t
1079 * Atomically updates @v to (@v + 1) with relaxed ordering.
1083 * Return: The updated value of @v.
1086 raw_atomic_inc_return_relaxed(atomic_t *v) in raw_atomic_inc_return_relaxed() argument
1089 return arch_atomic_inc_return_relaxed(v); in raw_atomic_inc_return_relaxed()
1091 return arch_atomic_inc_return(v); in raw_atomic_inc_return_relaxed()
1093 return raw_atomic_add_return_relaxed(1, v); in raw_atomic_inc_return_relaxed()
1099 * @v: pointer to atomic_t
1101 * Atomically updates @v to (@v + 1) with full ordering.
1105 * Return: The original value of @v.
1108 raw_atomic_fetch_inc(atomic_t *v) in raw_atomic_fetch_inc() argument
1111 return arch_atomic_fetch_inc(v); in raw_atomic_fetch_inc()
1115 ret = arch_atomic_fetch_inc_relaxed(v); in raw_atomic_fetch_inc()
1119 return raw_atomic_fetch_add(1, v); in raw_atomic_fetch_inc()
1125 * @v: pointer to atomic_t
1127 * Atomically updates @v to (@v + 1) with acquire ordering.
1131 * Return: The original value of @v.
1134 raw_atomic_fetch_inc_acquire(atomic_t *v) in raw_atomic_fetch_inc_acquire() argument
1137 return arch_atomic_fetch_inc_acquire(v); in raw_atomic_fetch_inc_acquire()
1139 int ret = arch_atomic_fetch_inc_relaxed(v); in raw_atomic_fetch_inc_acquire()
1143 return arch_atomic_fetch_inc(v); in raw_atomic_fetch_inc_acquire()
1145 return raw_atomic_fetch_add_acquire(1, v); in raw_atomic_fetch_inc_acquire()
1151 * @v: pointer to atomic_t
1153 * Atomically updates @v to (@v + 1) with release ordering.
1157 * Return: The original value of @v.
1160 raw_atomic_fetch_inc_release(atomic_t *v) in raw_atomic_fetch_inc_release() argument
1163 return arch_atomic_fetch_inc_release(v); in raw_atomic_fetch_inc_release()
1166 return arch_atomic_fetch_inc_relaxed(v); in raw_atomic_fetch_inc_release()
1168 return arch_atomic_fetch_inc(v); in raw_atomic_fetch_inc_release()
1170 return raw_atomic_fetch_add_release(1, v); in raw_atomic_fetch_inc_release()
1176 * @v: pointer to atomic_t
1178 * Atomically updates @v to (@v + 1) with relaxed ordering.
1182 * Return: The original value of @v.
1185 raw_atomic_fetch_inc_relaxed(atomic_t *v) in raw_atomic_fetch_inc_relaxed() argument
1188 return arch_atomic_fetch_inc_relaxed(v); in raw_atomic_fetch_inc_relaxed()
1190 return arch_atomic_fetch_inc(v); in raw_atomic_fetch_inc_relaxed()
1192 return raw_atomic_fetch_add_relaxed(1, v); in raw_atomic_fetch_inc_relaxed()
1198 * @v: pointer to atomic_t
1200 * Atomically updates @v to (@v - 1) with relaxed ordering.
1207 raw_atomic_dec(atomic_t *v) in raw_atomic_dec() argument
1210 arch_atomic_dec(v); in raw_atomic_dec()
1212 raw_atomic_sub(1, v); in raw_atomic_dec()
1218 * @v: pointer to atomic_t
1220 * Atomically updates @v to (@v - 1) with full ordering.
1224 * Return: The updated value of @v.
1227 raw_atomic_dec_return(atomic_t *v) in raw_atomic_dec_return() argument
1230 return arch_atomic_dec_return(v); in raw_atomic_dec_return()
1234 ret = arch_atomic_dec_return_relaxed(v); in raw_atomic_dec_return()
1238 return raw_atomic_sub_return(1, v); in raw_atomic_dec_return()
1244 * @v: pointer to atomic_t
1246 * Atomically updates @v to (@v - 1) with acquire ordering.
1250 * Return: The updated value of @v.
1253 raw_atomic_dec_return_acquire(atomic_t *v) in raw_atomic_dec_return_acquire() argument
1256 return arch_atomic_dec_return_acquire(v); in raw_atomic_dec_return_acquire()
1258 int ret = arch_atomic_dec_return_relaxed(v); in raw_atomic_dec_return_acquire()
1262 return arch_atomic_dec_return(v); in raw_atomic_dec_return_acquire()
1264 return raw_atomic_sub_return_acquire(1, v); in raw_atomic_dec_return_acquire()
1270 * @v: pointer to atomic_t
1272 * Atomically updates @v to (@v - 1) with release ordering.
1276 * Return: The updated value of @v.
1279 raw_atomic_dec_return_release(atomic_t *v) in raw_atomic_dec_return_release() argument
1282 return arch_atomic_dec_return_release(v); in raw_atomic_dec_return_release()
1285 return arch_atomic_dec_return_relaxed(v); in raw_atomic_dec_return_release()
1287 return arch_atomic_dec_return(v); in raw_atomic_dec_return_release()
1289 return raw_atomic_sub_return_release(1, v); in raw_atomic_dec_return_release()
1295 * @v: pointer to atomic_t
1297 * Atomically updates @v to (@v - 1) with relaxed ordering.
1301 * Return: The updated value of @v.
1304 raw_atomic_dec_return_relaxed(atomic_t *v) in raw_atomic_dec_return_relaxed() argument
1307 return arch_atomic_dec_return_relaxed(v); in raw_atomic_dec_return_relaxed()
1309 return arch_atomic_dec_return(v); in raw_atomic_dec_return_relaxed()
1311 return raw_atomic_sub_return_relaxed(1, v); in raw_atomic_dec_return_relaxed()
1317 * @v: pointer to atomic_t
1319 * Atomically updates @v to (@v - 1) with full ordering.
1323 * Return: The original value of @v.
1326 raw_atomic_fetch_dec(atomic_t *v) in raw_atomic_fetch_dec() argument
1329 return arch_atomic_fetch_dec(v); in raw_atomic_fetch_dec()
1333 ret = arch_atomic_fetch_dec_relaxed(v); in raw_atomic_fetch_dec()
1337 return raw_atomic_fetch_sub(1, v); in raw_atomic_fetch_dec()
1343 * @v: pointer to atomic_t
1345 * Atomically updates @v to (@v - 1) with acquire ordering.
1349 * Return: The original value of @v.
1352 raw_atomic_fetch_dec_acquire(atomic_t *v) in raw_atomic_fetch_dec_acquire() argument
1355 return arch_atomic_fetch_dec_acquire(v); in raw_atomic_fetch_dec_acquire()
1357 int ret = arch_atomic_fetch_dec_relaxed(v); in raw_atomic_fetch_dec_acquire()
1361 return arch_atomic_fetch_dec(v); in raw_atomic_fetch_dec_acquire()
1363 return raw_atomic_fetch_sub_acquire(1, v); in raw_atomic_fetch_dec_acquire()
1369 * @v: pointer to atomic_t
1371 * Atomically updates @v to (@v - 1) with release ordering.
1375 * Return: The original value of @v.
1378 raw_atomic_fetch_dec_release(atomic_t *v) in raw_atomic_fetch_dec_release() argument
1381 return arch_atomic_fetch_dec_release(v); in raw_atomic_fetch_dec_release()
1384 return arch_atomic_fetch_dec_relaxed(v); in raw_atomic_fetch_dec_release()
1386 return arch_atomic_fetch_dec(v); in raw_atomic_fetch_dec_release()
1388 return raw_atomic_fetch_sub_release(1, v); in raw_atomic_fetch_dec_release()
1394 * @v: pointer to atomic_t
1396 * Atomically updates @v to (@v - 1) with relaxed ordering.
1400 * Return: The original value of @v.
1403 raw_atomic_fetch_dec_relaxed(atomic_t *v) in raw_atomic_fetch_dec_relaxed() argument
1406 return arch_atomic_fetch_dec_relaxed(v); in raw_atomic_fetch_dec_relaxed()
1408 return arch_atomic_fetch_dec(v); in raw_atomic_fetch_dec_relaxed()
1410 return raw_atomic_fetch_sub_relaxed(1, v); in raw_atomic_fetch_dec_relaxed()
1417 * @v: pointer to atomic_t
1419 * Atomically updates @v to (@v & @i) with relaxed ordering.
1426 raw_atomic_and(int i, atomic_t *v) in raw_atomic_and() argument
1428 arch_atomic_and(i, v); in raw_atomic_and()
1434 * @v: pointer to atomic_t
1436 * Atomically updates @v to (@v & @i) with full ordering.
1440 * Return: The original value of @v.
1443 raw_atomic_fetch_and(int i, atomic_t *v) in raw_atomic_fetch_and() argument
1446 return arch_atomic_fetch_and(i, v); in raw_atomic_fetch_and()
1450 ret = arch_atomic_fetch_and_relaxed(i, v); in raw_atomic_fetch_and()
1461 * @v: pointer to atomic_t
1463 * Atomically updates @v to (@v & @i) with acquire ordering.
1467 * Return: The original value of @v.
1470 raw_atomic_fetch_and_acquire(int i, atomic_t *v) in raw_atomic_fetch_and_acquire() argument
1473 return arch_atomic_fetch_and_acquire(i, v); in raw_atomic_fetch_and_acquire()
1475 int ret = arch_atomic_fetch_and_relaxed(i, v); in raw_atomic_fetch_and_acquire()
1479 return arch_atomic_fetch_and(i, v); in raw_atomic_fetch_and_acquire()
1488 * @v: pointer to atomic_t
1490 * Atomically updates @v to (@v & @i) with release ordering.
1494 * Return: The original value of @v.
1497 raw_atomic_fetch_and_release(int i, atomic_t *v) in raw_atomic_fetch_and_release() argument
1500 return arch_atomic_fetch_and_release(i, v); in raw_atomic_fetch_and_release()
1503 return arch_atomic_fetch_and_relaxed(i, v); in raw_atomic_fetch_and_release()
1505 return arch_atomic_fetch_and(i, v); in raw_atomic_fetch_and_release()
1514 * @v: pointer to atomic_t
1516 * Atomically updates @v to (@v & @i) with relaxed ordering.
1520 * Return: The original value of @v.
1523 raw_atomic_fetch_and_relaxed(int i, atomic_t *v) in raw_atomic_fetch_and_relaxed() argument
1526 return arch_atomic_fetch_and_relaxed(i, v); in raw_atomic_fetch_and_relaxed()
1528 return arch_atomic_fetch_and(i, v); in raw_atomic_fetch_and_relaxed()
1537 * @v: pointer to atomic_t
1539 * Atomically updates @v to (@v & ~@i) with relaxed ordering.
1546 raw_atomic_andnot(int i, atomic_t *v) in raw_atomic_andnot() argument
1549 arch_atomic_andnot(i, v); in raw_atomic_andnot()
1551 raw_atomic_and(~i, v); in raw_atomic_andnot()
1558 * @v: pointer to atomic_t
1560 * Atomically updates @v to (@v & ~@i) with full ordering.
1564 * Return: The original value of @v.
1567 raw_atomic_fetch_andnot(int i, atomic_t *v) in raw_atomic_fetch_andnot() argument
1570 return arch_atomic_fetch_andnot(i, v); in raw_atomic_fetch_andnot()
1574 ret = arch_atomic_fetch_andnot_relaxed(i, v); in raw_atomic_fetch_andnot()
1578 return raw_atomic_fetch_and(~i, v); in raw_atomic_fetch_andnot()
1585 * @v: pointer to atomic_t
1587 * Atomically updates @v to (@v & ~@i) with acquire ordering.
1591 * Return: The original value of @v.
1594 raw_atomic_fetch_andnot_acquire(int i, atomic_t *v) in raw_atomic_fetch_andnot_acquire() argument
1597 return arch_atomic_fetch_andnot_acquire(i, v); in raw_atomic_fetch_andnot_acquire()
1599 int ret = arch_atomic_fetch_andnot_relaxed(i, v); in raw_atomic_fetch_andnot_acquire()
1603 return arch_atomic_fetch_andnot(i, v); in raw_atomic_fetch_andnot_acquire()
1605 return raw_atomic_fetch_and_acquire(~i, v); in raw_atomic_fetch_andnot_acquire()
1612 * @v: pointer to atomic_t
1614 * Atomically updates @v to (@v & ~@i) with release ordering.
1618 * Return: The original value of @v.
1621 raw_atomic_fetch_andnot_release(int i, atomic_t *v) in raw_atomic_fetch_andnot_release() argument
1624 return arch_atomic_fetch_andnot_release(i, v); in raw_atomic_fetch_andnot_release()
1627 return arch_atomic_fetch_andnot_relaxed(i, v); in raw_atomic_fetch_andnot_release()
1629 return arch_atomic_fetch_andnot(i, v); in raw_atomic_fetch_andnot_release()
1631 return raw_atomic_fetch_and_release(~i, v); in raw_atomic_fetch_andnot_release()
1638 * @v: pointer to atomic_t
1640 * Atomically updates @v to (@v & ~@i) with relaxed ordering.
1644 * Return: The original value of @v.
1647 raw_atomic_fetch_andnot_relaxed(int i, atomic_t *v) in raw_atomic_fetch_andnot_relaxed() argument
1650 return arch_atomic_fetch_andnot_relaxed(i, v); in raw_atomic_fetch_andnot_relaxed()
1652 return arch_atomic_fetch_andnot(i, v); in raw_atomic_fetch_andnot_relaxed()
1654 return raw_atomic_fetch_and_relaxed(~i, v); in raw_atomic_fetch_andnot_relaxed()
1661 * @v: pointer to atomic_t
1663 * Atomically updates @v to (@v | @i) with relaxed ordering.
1670 raw_atomic_or(int i, atomic_t *v) in raw_atomic_or() argument
1672 arch_atomic_or(i, v); in raw_atomic_or()
1678 * @v: pointer to atomic_t
1680 * Atomically updates @v to (@v | @i) with full ordering.
1684 * Return: The original value of @v.
1687 raw_atomic_fetch_or(int i, atomic_t *v) in raw_atomic_fetch_or() argument
1690 return arch_atomic_fetch_or(i, v); in raw_atomic_fetch_or()
1694 ret = arch_atomic_fetch_or_relaxed(i, v); in raw_atomic_fetch_or()
1705 * @v: pointer to atomic_t
1707 * Atomically updates @v to (@v | @i) with acquire ordering.
1711 * Return: The original value of @v.
1714 raw_atomic_fetch_or_acquire(int i, atomic_t *v) in raw_atomic_fetch_or_acquire() argument
1717 return arch_atomic_fetch_or_acquire(i, v); in raw_atomic_fetch_or_acquire()
1719 int ret = arch_atomic_fetch_or_relaxed(i, v); in raw_atomic_fetch_or_acquire()
1723 return arch_atomic_fetch_or(i, v); in raw_atomic_fetch_or_acquire()
1732 * @v: pointer to atomic_t
1734 * Atomically updates @v to (@v | @i) with release ordering.
1738 * Return: The original value of @v.
1741 raw_atomic_fetch_or_release(int i, atomic_t *v) in raw_atomic_fetch_or_release() argument
1744 return arch_atomic_fetch_or_release(i, v); in raw_atomic_fetch_or_release()
1747 return arch_atomic_fetch_or_relaxed(i, v); in raw_atomic_fetch_or_release()
1749 return arch_atomic_fetch_or(i, v); in raw_atomic_fetch_or_release()
1758 * @v: pointer to atomic_t
1760 * Atomically updates @v to (@v | @i) with relaxed ordering.
1764 * Return: The original value of @v.
1767 raw_atomic_fetch_or_relaxed(int i, atomic_t *v) in raw_atomic_fetch_or_relaxed() argument
1770 return arch_atomic_fetch_or_relaxed(i, v); in raw_atomic_fetch_or_relaxed()
1772 return arch_atomic_fetch_or(i, v); in raw_atomic_fetch_or_relaxed()
1781 * @v: pointer to atomic_t
1783 * Atomically updates @v to (@v ^ @i) with relaxed ordering.
1790 raw_atomic_xor(int i, atomic_t *v) in raw_atomic_xor() argument
1792 arch_atomic_xor(i, v); in raw_atomic_xor()
1798 * @v: pointer to atomic_t
1800 * Atomically updates @v to (@v ^ @i) with full ordering.
1804 * Return: The original value of @v.
1807 raw_atomic_fetch_xor(int i, atomic_t *v) in raw_atomic_fetch_xor() argument
1810 return arch_atomic_fetch_xor(i, v); in raw_atomic_fetch_xor()
1814 ret = arch_atomic_fetch_xor_relaxed(i, v); in raw_atomic_fetch_xor()
1825 * @v: pointer to atomic_t
1827 * Atomically updates @v to (@v ^ @i) with acquire ordering.
1831 * Return: The original value of @v.
1834 raw_atomic_fetch_xor_acquire(int i, atomic_t *v) in raw_atomic_fetch_xor_acquire() argument
1837 return arch_atomic_fetch_xor_acquire(i, v); in raw_atomic_fetch_xor_acquire()
1839 int ret = arch_atomic_fetch_xor_relaxed(i, v); in raw_atomic_fetch_xor_acquire()
1843 return arch_atomic_fetch_xor(i, v); in raw_atomic_fetch_xor_acquire()
1852 * @v: pointer to atomic_t
1854 * Atomically updates @v to (@v ^ @i) with release ordering.
1858 * Return: The original value of @v.
1861 raw_atomic_fetch_xor_release(int i, atomic_t *v) in raw_atomic_fetch_xor_release() argument
1864 return arch_atomic_fetch_xor_release(i, v); in raw_atomic_fetch_xor_release()
1867 return arch_atomic_fetch_xor_relaxed(i, v); in raw_atomic_fetch_xor_release()
1869 return arch_atomic_fetch_xor(i, v); in raw_atomic_fetch_xor_release()
1878 * @v: pointer to atomic_t
1880 * Atomically updates @v to (@v ^ @i) with relaxed ordering.
1884 * Return: The original value of @v.
1887 raw_atomic_fetch_xor_relaxed(int i, atomic_t *v) in raw_atomic_fetch_xor_relaxed() argument
1890 return arch_atomic_fetch_xor_relaxed(i, v); in raw_atomic_fetch_xor_relaxed()
1892 return arch_atomic_fetch_xor(i, v); in raw_atomic_fetch_xor_relaxed()
1900 * @v: pointer to atomic_t
1903 * Atomically updates @v to @new with full ordering.
1907 * Return: The original value of @v.
1910 raw_atomic_xchg(atomic_t *v, int new) in raw_atomic_xchg() argument
1913 return arch_atomic_xchg(v, new); in raw_atomic_xchg()
1917 ret = arch_atomic_xchg_relaxed(v, new); in raw_atomic_xchg()
1921 return raw_xchg(&v->counter, new); in raw_atomic_xchg()
1927 * @v: pointer to atomic_t
1930 * Atomically updates @v to @new with acquire ordering.
1934 * Return: The original value of @v.
1937 raw_atomic_xchg_acquire(atomic_t *v, int new) in raw_atomic_xchg_acquire() argument
1940 return arch_atomic_xchg_acquire(v, new); in raw_atomic_xchg_acquire()
1942 int ret = arch_atomic_xchg_relaxed(v, new); in raw_atomic_xchg_acquire()
1946 return arch_atomic_xchg(v, new); in raw_atomic_xchg_acquire()
1948 return raw_xchg_acquire(&v->counter, new); in raw_atomic_xchg_acquire()
1954 * @v: pointer to atomic_t
1957 * Atomically updates @v to @new with release ordering.
1961 * Return: The original value of @v.
1964 raw_atomic_xchg_release(atomic_t *v, int new) in raw_atomic_xchg_release() argument
1967 return arch_atomic_xchg_release(v, new); in raw_atomic_xchg_release()
1970 return arch_atomic_xchg_relaxed(v, new); in raw_atomic_xchg_release()
1972 return arch_atomic_xchg(v, new); in raw_atomic_xchg_release()
1974 return raw_xchg_release(&v->counter, new); in raw_atomic_xchg_release()
1980 * @v: pointer to atomic_t
1983 * Atomically updates @v to @new with relaxed ordering.
1987 * Return: The original value of @v.
1990 raw_atomic_xchg_relaxed(atomic_t *v, int new) in raw_atomic_xchg_relaxed() argument
1993 return arch_atomic_xchg_relaxed(v, new); in raw_atomic_xchg_relaxed()
1995 return arch_atomic_xchg(v, new); in raw_atomic_xchg_relaxed()
1997 return raw_xchg_relaxed(&v->counter, new); in raw_atomic_xchg_relaxed()
2003 * @v: pointer to atomic_t
2007 * If (@v == @old), atomically updates @v to @new with full ordering.
2011 * Return: The original value of @v.
2014 raw_atomic_cmpxchg(atomic_t *v, int old, int new) in raw_atomic_cmpxchg() argument
2017 return arch_atomic_cmpxchg(v, old, new); in raw_atomic_cmpxchg()
2021 ret = arch_atomic_cmpxchg_relaxed(v, old, new); in raw_atomic_cmpxchg()
2025 return raw_cmpxchg(&v->counter, old, new); in raw_atomic_cmpxchg()
2031 * @v: pointer to atomic_t
2035 * If (@v == @old), atomically updates @v to @new with acquire ordering.
2039 * Return: The original value of @v.
2042 raw_atomic_cmpxchg_acquire(atomic_t *v, int old, int new) in raw_atomic_cmpxchg_acquire() argument
2045 return arch_atomic_cmpxchg_acquire(v, old, new); in raw_atomic_cmpxchg_acquire()
2047 int ret = arch_atomic_cmpxchg_relaxed(v, old, new); in raw_atomic_cmpxchg_acquire()
2051 return arch_atomic_cmpxchg(v, old, new); in raw_atomic_cmpxchg_acquire()
2053 return raw_cmpxchg_acquire(&v->counter, old, new); in raw_atomic_cmpxchg_acquire()
2059 * @v: pointer to atomic_t
2063 * If (@v == @old), atomically updates @v to @new with release ordering.
2067 * Return: The original value of @v.
2070 raw_atomic_cmpxchg_release(atomic_t *v, int old, int new) in raw_atomic_cmpxchg_release() argument
2073 return arch_atomic_cmpxchg_release(v, old, new); in raw_atomic_cmpxchg_release()
2076 return arch_atomic_cmpxchg_relaxed(v, old, new); in raw_atomic_cmpxchg_release()
2078 return arch_atomic_cmpxchg(v, old, new); in raw_atomic_cmpxchg_release()
2080 return raw_cmpxchg_release(&v->counter, old, new); in raw_atomic_cmpxchg_release()
2086 * @v: pointer to atomic_t
2090 * If (@v == @old), atomically updates @v to @new with relaxed ordering.
2094 * Return: The original value of @v.
2097 raw_atomic_cmpxchg_relaxed(atomic_t *v, int old, int new) in raw_atomic_cmpxchg_relaxed() argument
2100 return arch_atomic_cmpxchg_relaxed(v, old, new); in raw_atomic_cmpxchg_relaxed()
2102 return arch_atomic_cmpxchg(v, old, new); in raw_atomic_cmpxchg_relaxed()
2104 return raw_cmpxchg_relaxed(&v->counter, old, new); in raw_atomic_cmpxchg_relaxed()
2110 * @v: pointer to atomic_t
2114 * If (@v == @old), atomically updates @v to @new with full ordering.
2115 * Otherwise, updates @old to the current value of @v.
2122 raw_atomic_try_cmpxchg(atomic_t *v, int *old, int new) in raw_atomic_try_cmpxchg() argument
2125 return arch_atomic_try_cmpxchg(v, old, new); in raw_atomic_try_cmpxchg()
2129 ret = arch_atomic_try_cmpxchg_relaxed(v, old, new); in raw_atomic_try_cmpxchg()
2134 r = raw_atomic_cmpxchg(v, o, new); in raw_atomic_try_cmpxchg()
2143 * @v: pointer to atomic_t
2147 * If (@v == @old), atomically updates @v to @new with acquire ordering.
2148 * Otherwise, updates @old to the current value of @v.
2155 raw_atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new) in raw_atomic_try_cmpxchg_acquire() argument
2158 return arch_atomic_try_cmpxchg_acquire(v, old, new); in raw_atomic_try_cmpxchg_acquire()
2160 bool ret = arch_atomic_try_cmpxchg_relaxed(v, old, new); in raw_atomic_try_cmpxchg_acquire()
2164 return arch_atomic_try_cmpxchg(v, old, new); in raw_atomic_try_cmpxchg_acquire()
2167 r = raw_atomic_cmpxchg_acquire(v, o, new); in raw_atomic_try_cmpxchg_acquire()
2176 * @v: pointer to atomic_t
2180 * If (@v == @old), atomically updates @v to @new with release ordering.
2181 * Otherwise, updates @old to the current value of @v.
2188 raw_atomic_try_cmpxchg_release(atomic_t *v, int *old, int new) in raw_atomic_try_cmpxchg_release() argument
2191 return arch_atomic_try_cmpxchg_release(v, old, new); in raw_atomic_try_cmpxchg_release()
2194 return arch_atomic_try_cmpxchg_relaxed(v, old, new); in raw_atomic_try_cmpxchg_release()
2196 return arch_atomic_try_cmpxchg(v, old, new); in raw_atomic_try_cmpxchg_release()
2199 r = raw_atomic_cmpxchg_release(v, o, new); in raw_atomic_try_cmpxchg_release()
2208 * @v: pointer to atomic_t
2212 * If (@v == @old), atomically updates @v to @new with relaxed ordering.
2213 * Otherwise, updates @old to the current value of @v.
2220 raw_atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new) in raw_atomic_try_cmpxchg_relaxed() argument
2223 return arch_atomic_try_cmpxchg_relaxed(v, old, new); in raw_atomic_try_cmpxchg_relaxed()
2225 return arch_atomic_try_cmpxchg(v, old, new); in raw_atomic_try_cmpxchg_relaxed()
2228 r = raw_atomic_cmpxchg_relaxed(v, o, new); in raw_atomic_try_cmpxchg_relaxed()
2238 * @v: pointer to atomic_t
2240 * Atomically updates @v to (@v - @i) with full ordering.
2244 * Return: @true if the resulting value of @v is zero, @false otherwise.
2247 raw_atomic_sub_and_test(int i, atomic_t *v) in raw_atomic_sub_and_test() argument
2250 return arch_atomic_sub_and_test(i, v); in raw_atomic_sub_and_test()
2252 return raw_atomic_sub_return(i, v) == 0; in raw_atomic_sub_and_test()
2258 * @v: pointer to atomic_t
2260 * Atomically updates @v to (@v - 1) with full ordering.
2264 * Return: @true if the resulting value of @v is zero, @false otherwise.
2267 raw_atomic_dec_and_test(atomic_t *v) in raw_atomic_dec_and_test() argument
2270 return arch_atomic_dec_and_test(v); in raw_atomic_dec_and_test()
2272 return raw_atomic_dec_return(v) == 0; in raw_atomic_dec_and_test()
2278 * @v: pointer to atomic_t
2280 * Atomically updates @v to (@v + 1) with full ordering.
2284 * Return: @true if the resulting value of @v is zero, @false otherwise.
2287 raw_atomic_inc_and_test(atomic_t *v) in raw_atomic_inc_and_test() argument
2290 return arch_atomic_inc_and_test(v); in raw_atomic_inc_and_test()
2292 return raw_atomic_inc_return(v) == 0; in raw_atomic_inc_and_test()
2299 * @v: pointer to atomic_t
2301 * Atomically updates @v to (@v + @i) with full ordering.
2305 * Return: @true if the resulting value of @v is negative, @false otherwise.
2308 raw_atomic_add_negative(int i, atomic_t *v) in raw_atomic_add_negative() argument
2311 return arch_atomic_add_negative(i, v); in raw_atomic_add_negative()
2315 ret = arch_atomic_add_negative_relaxed(i, v); in raw_atomic_add_negative()
2319 return raw_atomic_add_return(i, v) < 0; in raw_atomic_add_negative()
2326 * @v: pointer to atomic_t
2328 * Atomically updates @v to (@v + @i) with acquire ordering.
2332 * Return: @true if the resulting value of @v is negative, @false otherwise.
2335 raw_atomic_add_negative_acquire(int i, atomic_t *v) in raw_atomic_add_negative_acquire() argument
2338 return arch_atomic_add_negative_acquire(i, v); in raw_atomic_add_negative_acquire()
2340 bool ret = arch_atomic_add_negative_relaxed(i, v); in raw_atomic_add_negative_acquire()
2344 return arch_atomic_add_negative(i, v); in raw_atomic_add_negative_acquire()
2346 return raw_atomic_add_return_acquire(i, v) < 0; in raw_atomic_add_negative_acquire()
2353 * @v: pointer to atomic_t
2355 * Atomically updates @v to (@v + @i) with release ordering.
2359 * Return: @true if the resulting value of @v is negative, @false otherwise.
2362 raw_atomic_add_negative_release(int i, atomic_t *v) in raw_atomic_add_negative_release() argument
2365 return arch_atomic_add_negative_release(i, v); in raw_atomic_add_negative_release()
2368 return arch_atomic_add_negative_relaxed(i, v); in raw_atomic_add_negative_release()
2370 return arch_atomic_add_negative(i, v); in raw_atomic_add_negative_release()
2372 return raw_atomic_add_return_release(i, v) < 0; in raw_atomic_add_negative_release()
2379 * @v: pointer to atomic_t
2381 * Atomically updates @v to (@v + @i) with relaxed ordering.
2385 * Return: @true if the resulting value of @v is negative, @false otherwise.
2388 raw_atomic_add_negative_relaxed(int i, atomic_t *v) in raw_atomic_add_negative_relaxed() argument
2391 return arch_atomic_add_negative_relaxed(i, v); in raw_atomic_add_negative_relaxed()
2393 return arch_atomic_add_negative(i, v); in raw_atomic_add_negative_relaxed()
2395 return raw_atomic_add_return_relaxed(i, v) < 0; in raw_atomic_add_negative_relaxed()
2401 * @v: pointer to atomic_t
2405 * If (@v != @u), atomically updates @v to (@v + @a) with full ordering.
2409 * Return: The original value of @v.
2412 raw_atomic_fetch_add_unless(atomic_t *v, int a, int u) in raw_atomic_fetch_add_unless() argument
2415 return arch_atomic_fetch_add_unless(v, a, u); in raw_atomic_fetch_add_unless()
2417 int c = raw_atomic_read(v); in raw_atomic_fetch_add_unless()
2422 } while (!raw_atomic_try_cmpxchg(v, &c, c + a)); in raw_atomic_fetch_add_unless()
2430 * @v: pointer to atomic_t
2434 * If (@v != @u), atomically updates @v to (@v + @a) with full ordering.
2438 * Return: @true if @v was updated, @false otherwise.
2441 raw_atomic_add_unless(atomic_t *v, int a, int u) in raw_atomic_add_unless() argument
2444 return arch_atomic_add_unless(v, a, u); in raw_atomic_add_unless()
2446 return raw_atomic_fetch_add_unless(v, a, u) != u; in raw_atomic_add_unless()
2452 * @v: pointer to atomic_t
2454 * If (@v != 0), atomically updates @v to (@v + 1) with full ordering.
2458 * Return: @true if @v was updated, @false otherwise.
2461 raw_atomic_inc_not_zero(atomic_t *v) in raw_atomic_inc_not_zero() argument
2464 return arch_atomic_inc_not_zero(v); in raw_atomic_inc_not_zero()
2466 return raw_atomic_add_unless(v, 1, 0); in raw_atomic_inc_not_zero()
2472 * @v: pointer to atomic_t
2474 * If (@v >= 0), atomically updates @v to (@v + 1) with full ordering.
2478 * Return: @true if @v was updated, @false otherwise.
2481 raw_atomic_inc_unless_negative(atomic_t *v) in raw_atomic_inc_unless_negative() argument
2484 return arch_atomic_inc_unless_negative(v); in raw_atomic_inc_unless_negative()
2486 int c = raw_atomic_read(v); in raw_atomic_inc_unless_negative()
2491 } while (!raw_atomic_try_cmpxchg(v, &c, c + 1)); in raw_atomic_inc_unless_negative()
2499 * @v: pointer to atomic_t
2501 * If (@v <= 0), atomically updates @v to (@v - 1) with full ordering.
2505 * Return: @true if @v was updated, @false otherwise.
2508 raw_atomic_dec_unless_positive(atomic_t *v) in raw_atomic_dec_unless_positive() argument
2511 return arch_atomic_dec_unless_positive(v); in raw_atomic_dec_unless_positive()
2513 int c = raw_atomic_read(v); in raw_atomic_dec_unless_positive()
2518 } while (!raw_atomic_try_cmpxchg(v, &c, c - 1)); in raw_atomic_dec_unless_positive()
2526 * @v: pointer to atomic_t
2528 * If (@v > 0), atomically updates @v to (@v - 1) with full ordering.
2532 * Return: The old value of (@v - 1), regardless of whether @v was updated.
2535 raw_atomic_dec_if_positive(atomic_t *v) in raw_atomic_dec_if_positive() argument
2538 return arch_atomic_dec_if_positive(v); in raw_atomic_dec_if_positive()
2540 int dec, c = raw_atomic_read(v); in raw_atomic_dec_if_positive()
2546 } while (!raw_atomic_try_cmpxchg(v, &c, dec)); in raw_atomic_dec_if_positive()
2558 * @v: pointer to atomic64_t
2560 * Atomically loads the value of @v with relaxed ordering.
2564 * Return: The value loaded from @v.
2567 raw_atomic64_read(const atomic64_t *v) in raw_atomic64_read() argument
2569 return arch_atomic64_read(v); in raw_atomic64_read()
2574 * @v: pointer to atomic64_t
2576 * Atomically loads the value of @v with acquire ordering.
2580 * Return: The value loaded from @v.
2583 raw_atomic64_read_acquire(const atomic64_t *v) in raw_atomic64_read_acquire() argument
2586 return arch_atomic64_read_acquire(v); in raw_atomic64_read_acquire()
2591 ret = smp_load_acquire(&(v)->counter); in raw_atomic64_read_acquire()
2593 ret = raw_atomic64_read(v); in raw_atomic64_read_acquire()
2603 * @v: pointer to atomic64_t
2606 * Atomically sets @v to @i with relaxed ordering.
2613 raw_atomic64_set(atomic64_t *v, s64 i) in raw_atomic64_set() argument
2615 arch_atomic64_set(v, i); in raw_atomic64_set()
2620 * @v: pointer to atomic64_t
2623 * Atomically sets @v to @i with release ordering.
2630 raw_atomic64_set_release(atomic64_t *v, s64 i) in raw_atomic64_set_release() argument
2633 arch_atomic64_set_release(v, i); in raw_atomic64_set_release()
2636 smp_store_release(&(v)->counter, i); in raw_atomic64_set_release()
2639 raw_atomic64_set(v, i); in raw_atomic64_set_release()
2647 * @v: pointer to atomic64_t
2649 * Atomically updates @v to (@v + @i) with relaxed ordering.
2656 raw_atomic64_add(s64 i, atomic64_t *v) in raw_atomic64_add() argument
2658 arch_atomic64_add(i, v); in raw_atomic64_add()
2664 * @v: pointer to atomic64_t
2666 * Atomically updates @v to (@v + @i) with full ordering.
2670 * Return: The updated value of @v.
2673 raw_atomic64_add_return(s64 i, atomic64_t *v) in raw_atomic64_add_return() argument
2676 return arch_atomic64_add_return(i, v); in raw_atomic64_add_return()
2680 ret = arch_atomic64_add_return_relaxed(i, v); in raw_atomic64_add_return()
2691 * @v: pointer to atomic64_t
2693 * Atomically updates @v to (@v + @i) with acquire ordering.
2697 * Return: The updated value of @v.
2700 raw_atomic64_add_return_acquire(s64 i, atomic64_t *v) in raw_atomic64_add_return_acquire() argument
2703 return arch_atomic64_add_return_acquire(i, v); in raw_atomic64_add_return_acquire()
2705 s64 ret = arch_atomic64_add_return_relaxed(i, v); in raw_atomic64_add_return_acquire()
2709 return arch_atomic64_add_return(i, v); in raw_atomic64_add_return_acquire()
2718 * @v: pointer to atomic64_t
2720 * Atomically updates @v to (@v + @i) with release ordering.
2724 * Return: The updated value of @v.
2727 raw_atomic64_add_return_release(s64 i, atomic64_t *v) in raw_atomic64_add_return_release() argument
2730 return arch_atomic64_add_return_release(i, v); in raw_atomic64_add_return_release()
2733 return arch_atomic64_add_return_relaxed(i, v); in raw_atomic64_add_return_release()
2735 return arch_atomic64_add_return(i, v); in raw_atomic64_add_return_release()
2744 * @v: pointer to atomic64_t
2746 * Atomically updates @v to (@v + @i) with relaxed ordering.
2750 * Return: The updated value of @v.
2753 raw_atomic64_add_return_relaxed(s64 i, atomic64_t *v) in raw_atomic64_add_return_relaxed() argument
2756 return arch_atomic64_add_return_relaxed(i, v); in raw_atomic64_add_return_relaxed()
2758 return arch_atomic64_add_return(i, v); in raw_atomic64_add_return_relaxed()
2767 * @v: pointer to atomic64_t
2769 * Atomically updates @v to (@v + @i) with full ordering.
2773 * Return: The original value of @v.
2776 raw_atomic64_fetch_add(s64 i, atomic64_t *v) in raw_atomic64_fetch_add() argument
2779 return arch_atomic64_fetch_add(i, v); in raw_atomic64_fetch_add()
2783 ret = arch_atomic64_fetch_add_relaxed(i, v); in raw_atomic64_fetch_add()
2794 * @v: pointer to atomic64_t
2796 * Atomically updates @v to (@v + @i) with acquire ordering.
2800 * Return: The original value of @v.
2803 raw_atomic64_fetch_add_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_add_acquire() argument
2806 return arch_atomic64_fetch_add_acquire(i, v); in raw_atomic64_fetch_add_acquire()
2808 s64 ret = arch_atomic64_fetch_add_relaxed(i, v); in raw_atomic64_fetch_add_acquire()
2812 return arch_atomic64_fetch_add(i, v); in raw_atomic64_fetch_add_acquire()
2821 * @v: pointer to atomic64_t
2823 * Atomically updates @v to (@v + @i) with release ordering.
2827 * Return: The original value of @v.
2830 raw_atomic64_fetch_add_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_add_release() argument
2833 return arch_atomic64_fetch_add_release(i, v); in raw_atomic64_fetch_add_release()
2836 return arch_atomic64_fetch_add_relaxed(i, v); in raw_atomic64_fetch_add_release()
2838 return arch_atomic64_fetch_add(i, v); in raw_atomic64_fetch_add_release()
2847 * @v: pointer to atomic64_t
2849 * Atomically updates @v to (@v + @i) with relaxed ordering.
2853 * Return: The original value of @v.
2856 raw_atomic64_fetch_add_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_add_relaxed() argument
2859 return arch_atomic64_fetch_add_relaxed(i, v); in raw_atomic64_fetch_add_relaxed()
2861 return arch_atomic64_fetch_add(i, v); in raw_atomic64_fetch_add_relaxed()
2870 * @v: pointer to atomic64_t
2872 * Atomically updates @v to (@v - @i) with relaxed ordering.
2879 raw_atomic64_sub(s64 i, atomic64_t *v) in raw_atomic64_sub() argument
2881 arch_atomic64_sub(i, v); in raw_atomic64_sub()
2887 * @v: pointer to atomic64_t
2889 * Atomically updates @v to (@v - @i) with full ordering.
2893 * Return: The updated value of @v.
2896 raw_atomic64_sub_return(s64 i, atomic64_t *v) in raw_atomic64_sub_return() argument
2899 return arch_atomic64_sub_return(i, v); in raw_atomic64_sub_return()
2903 ret = arch_atomic64_sub_return_relaxed(i, v); in raw_atomic64_sub_return()
2914 * @v: pointer to atomic64_t
2916 * Atomically updates @v to (@v - @i) with acquire ordering.
2920 * Return: The updated value of @v.
2923 raw_atomic64_sub_return_acquire(s64 i, atomic64_t *v) in raw_atomic64_sub_return_acquire() argument
2926 return arch_atomic64_sub_return_acquire(i, v); in raw_atomic64_sub_return_acquire()
2928 s64 ret = arch_atomic64_sub_return_relaxed(i, v); in raw_atomic64_sub_return_acquire()
2932 return arch_atomic64_sub_return(i, v); in raw_atomic64_sub_return_acquire()
2941 * @v: pointer to atomic64_t
2943 * Atomically updates @v to (@v - @i) with release ordering.
2947 * Return: The updated value of @v.
2950 raw_atomic64_sub_return_release(s64 i, atomic64_t *v) in raw_atomic64_sub_return_release() argument
2953 return arch_atomic64_sub_return_release(i, v); in raw_atomic64_sub_return_release()
2956 return arch_atomic64_sub_return_relaxed(i, v); in raw_atomic64_sub_return_release()
2958 return arch_atomic64_sub_return(i, v); in raw_atomic64_sub_return_release()
2967 * @v: pointer to atomic64_t
2969 * Atomically updates @v to (@v - @i) with relaxed ordering.
2973 * Return: The updated value of @v.
2976 raw_atomic64_sub_return_relaxed(s64 i, atomic64_t *v) in raw_atomic64_sub_return_relaxed() argument
2979 return arch_atomic64_sub_return_relaxed(i, v); in raw_atomic64_sub_return_relaxed()
2981 return arch_atomic64_sub_return(i, v); in raw_atomic64_sub_return_relaxed()
2990 * @v: pointer to atomic64_t
2992 * Atomically updates @v to (@v - @i) with full ordering.
2996 * Return: The original value of @v.
2999 raw_atomic64_fetch_sub(s64 i, atomic64_t *v) in raw_atomic64_fetch_sub() argument
3002 return arch_atomic64_fetch_sub(i, v); in raw_atomic64_fetch_sub()
3006 ret = arch_atomic64_fetch_sub_relaxed(i, v); in raw_atomic64_fetch_sub()
3017 * @v: pointer to atomic64_t
3019 * Atomically updates @v to (@v - @i) with acquire ordering.
3023 * Return: The original value of @v.
3026 raw_atomic64_fetch_sub_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_sub_acquire() argument
3029 return arch_atomic64_fetch_sub_acquire(i, v); in raw_atomic64_fetch_sub_acquire()
3031 s64 ret = arch_atomic64_fetch_sub_relaxed(i, v); in raw_atomic64_fetch_sub_acquire()
3035 return arch_atomic64_fetch_sub(i, v); in raw_atomic64_fetch_sub_acquire()
3044 * @v: pointer to atomic64_t
3046 * Atomically updates @v to (@v - @i) with release ordering.
3050 * Return: The original value of @v.
3053 raw_atomic64_fetch_sub_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_sub_release() argument
3056 return arch_atomic64_fetch_sub_release(i, v); in raw_atomic64_fetch_sub_release()
3059 return arch_atomic64_fetch_sub_relaxed(i, v); in raw_atomic64_fetch_sub_release()
3061 return arch_atomic64_fetch_sub(i, v); in raw_atomic64_fetch_sub_release()
3070 * @v: pointer to atomic64_t
3072 * Atomically updates @v to (@v - @i) with relaxed ordering.
3076 * Return: The original value of @v.
3079 raw_atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_sub_relaxed() argument
3082 return arch_atomic64_fetch_sub_relaxed(i, v); in raw_atomic64_fetch_sub_relaxed()
3084 return arch_atomic64_fetch_sub(i, v); in raw_atomic64_fetch_sub_relaxed()
3092 * @v: pointer to atomic64_t
3094 * Atomically updates @v to (@v + 1) with relaxed ordering.
3101 raw_atomic64_inc(atomic64_t *v) in raw_atomic64_inc() argument
3104 arch_atomic64_inc(v); in raw_atomic64_inc()
3106 raw_atomic64_add(1, v); in raw_atomic64_inc()
3112 * @v: pointer to atomic64_t
3114 * Atomically updates @v to (@v + 1) with full ordering.
3118 * Return: The updated value of @v.
3121 raw_atomic64_inc_return(atomic64_t *v) in raw_atomic64_inc_return() argument
3124 return arch_atomic64_inc_return(v); in raw_atomic64_inc_return()
3128 ret = arch_atomic64_inc_return_relaxed(v); in raw_atomic64_inc_return()
3132 return raw_atomic64_add_return(1, v); in raw_atomic64_inc_return()
3138 * @v: pointer to atomic64_t
3140 * Atomically updates @v to (@v + 1) with acquire ordering.
3144 * Return: The updated value of @v.
3147 raw_atomic64_inc_return_acquire(atomic64_t *v) in raw_atomic64_inc_return_acquire() argument
3150 return arch_atomic64_inc_return_acquire(v); in raw_atomic64_inc_return_acquire()
3152 s64 ret = arch_atomic64_inc_return_relaxed(v); in raw_atomic64_inc_return_acquire()
3156 return arch_atomic64_inc_return(v); in raw_atomic64_inc_return_acquire()
3158 return raw_atomic64_add_return_acquire(1, v); in raw_atomic64_inc_return_acquire()
3164 * @v: pointer to atomic64_t
3166 * Atomically updates @v to (@v + 1) with release ordering.
3170 * Return: The updated value of @v.
3173 raw_atomic64_inc_return_release(atomic64_t *v) in raw_atomic64_inc_return_release() argument
3176 return arch_atomic64_inc_return_release(v); in raw_atomic64_inc_return_release()
3179 return arch_atomic64_inc_return_relaxed(v); in raw_atomic64_inc_return_release()
3181 return arch_atomic64_inc_return(v); in raw_atomic64_inc_return_release()
3183 return raw_atomic64_add_return_release(1, v); in raw_atomic64_inc_return_release()
3189 * @v: pointer to atomic64_t
3191 * Atomically updates @v to (@v + 1) with relaxed ordering.
3195 * Return: The updated value of @v.
3198 raw_atomic64_inc_return_relaxed(atomic64_t *v) in raw_atomic64_inc_return_relaxed() argument
3201 return arch_atomic64_inc_return_relaxed(v); in raw_atomic64_inc_return_relaxed()
3203 return arch_atomic64_inc_return(v); in raw_atomic64_inc_return_relaxed()
3205 return raw_atomic64_add_return_relaxed(1, v); in raw_atomic64_inc_return_relaxed()
3211 * @v: pointer to atomic64_t
3213 * Atomically updates @v to (@v + 1) with full ordering.
3217 * Return: The original value of @v.
3220 raw_atomic64_fetch_inc(atomic64_t *v) in raw_atomic64_fetch_inc() argument
3223 return arch_atomic64_fetch_inc(v); in raw_atomic64_fetch_inc()
3227 ret = arch_atomic64_fetch_inc_relaxed(v); in raw_atomic64_fetch_inc()
3231 return raw_atomic64_fetch_add(1, v); in raw_atomic64_fetch_inc()
3237 * @v: pointer to atomic64_t
3239 * Atomically updates @v to (@v + 1) with acquire ordering.
3243 * Return: The original value of @v.
3246 raw_atomic64_fetch_inc_acquire(atomic64_t *v) in raw_atomic64_fetch_inc_acquire() argument
3249 return arch_atomic64_fetch_inc_acquire(v); in raw_atomic64_fetch_inc_acquire()
3251 s64 ret = arch_atomic64_fetch_inc_relaxed(v); in raw_atomic64_fetch_inc_acquire()
3255 return arch_atomic64_fetch_inc(v); in raw_atomic64_fetch_inc_acquire()
3257 return raw_atomic64_fetch_add_acquire(1, v); in raw_atomic64_fetch_inc_acquire()
3263 * @v: pointer to atomic64_t
3265 * Atomically updates @v to (@v + 1) with release ordering.
3269 * Return: The original value of @v.
3272 raw_atomic64_fetch_inc_release(atomic64_t *v) in raw_atomic64_fetch_inc_release() argument
3275 return arch_atomic64_fetch_inc_release(v); in raw_atomic64_fetch_inc_release()
3278 return arch_atomic64_fetch_inc_relaxed(v); in raw_atomic64_fetch_inc_release()
3280 return arch_atomic64_fetch_inc(v); in raw_atomic64_fetch_inc_release()
3282 return raw_atomic64_fetch_add_release(1, v); in raw_atomic64_fetch_inc_release()
3288 * @v: pointer to atomic64_t
3290 * Atomically updates @v to (@v + 1) with relaxed ordering.
3294 * Return: The original value of @v.
3297 raw_atomic64_fetch_inc_relaxed(atomic64_t *v) in raw_atomic64_fetch_inc_relaxed() argument
3300 return arch_atomic64_fetch_inc_relaxed(v); in raw_atomic64_fetch_inc_relaxed()
3302 return arch_atomic64_fetch_inc(v); in raw_atomic64_fetch_inc_relaxed()
3304 return raw_atomic64_fetch_add_relaxed(1, v); in raw_atomic64_fetch_inc_relaxed()
3310 * @v: pointer to atomic64_t
3312 * Atomically updates @v to (@v - 1) with relaxed ordering.
3319 raw_atomic64_dec(atomic64_t *v) in raw_atomic64_dec() argument
3322 arch_atomic64_dec(v); in raw_atomic64_dec()
3324 raw_atomic64_sub(1, v); in raw_atomic64_dec()
3330 * @v: pointer to atomic64_t
3332 * Atomically updates @v to (@v - 1) with full ordering.
3336 * Return: The updated value of @v.
3339 raw_atomic64_dec_return(atomic64_t *v) in raw_atomic64_dec_return() argument
3342 return arch_atomic64_dec_return(v); in raw_atomic64_dec_return()
3346 ret = arch_atomic64_dec_return_relaxed(v); in raw_atomic64_dec_return()
3350 return raw_atomic64_sub_return(1, v); in raw_atomic64_dec_return()
3356 * @v: pointer to atomic64_t
3358 * Atomically updates @v to (@v - 1) with acquire ordering.
3362 * Return: The updated value of @v.
3365 raw_atomic64_dec_return_acquire(atomic64_t *v) in raw_atomic64_dec_return_acquire() argument
3368 return arch_atomic64_dec_return_acquire(v); in raw_atomic64_dec_return_acquire()
3370 s64 ret = arch_atomic64_dec_return_relaxed(v); in raw_atomic64_dec_return_acquire()
3374 return arch_atomic64_dec_return(v); in raw_atomic64_dec_return_acquire()
3376 return raw_atomic64_sub_return_acquire(1, v); in raw_atomic64_dec_return_acquire()
3382 * @v: pointer to atomic64_t
3384 * Atomically updates @v to (@v - 1) with release ordering.
3388 * Return: The updated value of @v.
3391 raw_atomic64_dec_return_release(atomic64_t *v) in raw_atomic64_dec_return_release() argument
3394 return arch_atomic64_dec_return_release(v); in raw_atomic64_dec_return_release()
3397 return arch_atomic64_dec_return_relaxed(v); in raw_atomic64_dec_return_release()
3399 return arch_atomic64_dec_return(v); in raw_atomic64_dec_return_release()
3401 return raw_atomic64_sub_return_release(1, v); in raw_atomic64_dec_return_release()
3407 * @v: pointer to atomic64_t
3409 * Atomically updates @v to (@v - 1) with relaxed ordering.
3413 * Return: The updated value of @v.
3416 raw_atomic64_dec_return_relaxed(atomic64_t *v) in raw_atomic64_dec_return_relaxed() argument
3419 return arch_atomic64_dec_return_relaxed(v); in raw_atomic64_dec_return_relaxed()
3421 return arch_atomic64_dec_return(v); in raw_atomic64_dec_return_relaxed()
3423 return raw_atomic64_sub_return_relaxed(1, v); in raw_atomic64_dec_return_relaxed()
3429 * @v: pointer to atomic64_t
3431 * Atomically updates @v to (@v - 1) with full ordering.
3435 * Return: The original value of @v.
3438 raw_atomic64_fetch_dec(atomic64_t *v) in raw_atomic64_fetch_dec() argument
3441 return arch_atomic64_fetch_dec(v); in raw_atomic64_fetch_dec()
3445 ret = arch_atomic64_fetch_dec_relaxed(v); in raw_atomic64_fetch_dec()
3449 return raw_atomic64_fetch_sub(1, v); in raw_atomic64_fetch_dec()
3455 * @v: pointer to atomic64_t
3457 * Atomically updates @v to (@v - 1) with acquire ordering.
3461 * Return: The original value of @v.
3464 raw_atomic64_fetch_dec_acquire(atomic64_t *v) in raw_atomic64_fetch_dec_acquire() argument
3467 return arch_atomic64_fetch_dec_acquire(v); in raw_atomic64_fetch_dec_acquire()
3469 s64 ret = arch_atomic64_fetch_dec_relaxed(v); in raw_atomic64_fetch_dec_acquire()
3473 return arch_atomic64_fetch_dec(v); in raw_atomic64_fetch_dec_acquire()
3475 return raw_atomic64_fetch_sub_acquire(1, v); in raw_atomic64_fetch_dec_acquire()
3481 * @v: pointer to atomic64_t
3483 * Atomically updates @v to (@v - 1) with release ordering.
3487 * Return: The original value of @v.
3490 raw_atomic64_fetch_dec_release(atomic64_t *v) in raw_atomic64_fetch_dec_release() argument
3493 return arch_atomic64_fetch_dec_release(v); in raw_atomic64_fetch_dec_release()
3496 return arch_atomic64_fetch_dec_relaxed(v); in raw_atomic64_fetch_dec_release()
3498 return arch_atomic64_fetch_dec(v); in raw_atomic64_fetch_dec_release()
3500 return raw_atomic64_fetch_sub_release(1, v); in raw_atomic64_fetch_dec_release()
3506 * @v: pointer to atomic64_t
3508 * Atomically updates @v to (@v - 1) with relaxed ordering.
3512 * Return: The original value of @v.
3515 raw_atomic64_fetch_dec_relaxed(atomic64_t *v) in raw_atomic64_fetch_dec_relaxed() argument
3518 return arch_atomic64_fetch_dec_relaxed(v); in raw_atomic64_fetch_dec_relaxed()
3520 return arch_atomic64_fetch_dec(v); in raw_atomic64_fetch_dec_relaxed()
3522 return raw_atomic64_fetch_sub_relaxed(1, v); in raw_atomic64_fetch_dec_relaxed()
3529 * @v: pointer to atomic64_t
3531 * Atomically updates @v to (@v & @i) with relaxed ordering.
3538 raw_atomic64_and(s64 i, atomic64_t *v) in raw_atomic64_and() argument
3540 arch_atomic64_and(i, v); in raw_atomic64_and()
3546 * @v: pointer to atomic64_t
3548 * Atomically updates @v to (@v & @i) with full ordering.
3552 * Return: The original value of @v.
3555 raw_atomic64_fetch_and(s64 i, atomic64_t *v) in raw_atomic64_fetch_and() argument
3558 return arch_atomic64_fetch_and(i, v); in raw_atomic64_fetch_and()
3562 ret = arch_atomic64_fetch_and_relaxed(i, v); in raw_atomic64_fetch_and()
3573 * @v: pointer to atomic64_t
3575 * Atomically updates @v to (@v & @i) with acquire ordering.
3579 * Return: The original value of @v.
3582 raw_atomic64_fetch_and_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_and_acquire() argument
3585 return arch_atomic64_fetch_and_acquire(i, v); in raw_atomic64_fetch_and_acquire()
3587 s64 ret = arch_atomic64_fetch_and_relaxed(i, v); in raw_atomic64_fetch_and_acquire()
3591 return arch_atomic64_fetch_and(i, v); in raw_atomic64_fetch_and_acquire()
3600 * @v: pointer to atomic64_t
3602 * Atomically updates @v to (@v & @i) with release ordering.
3606 * Return: The original value of @v.
3609 raw_atomic64_fetch_and_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_and_release() argument
3612 return arch_atomic64_fetch_and_release(i, v); in raw_atomic64_fetch_and_release()
3615 return arch_atomic64_fetch_and_relaxed(i, v); in raw_atomic64_fetch_and_release()
3617 return arch_atomic64_fetch_and(i, v); in raw_atomic64_fetch_and_release()
3626 * @v: pointer to atomic64_t
3628 * Atomically updates @v to (@v & @i) with relaxed ordering.
3632 * Return: The original value of @v.
3635 raw_atomic64_fetch_and_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_and_relaxed() argument
3638 return arch_atomic64_fetch_and_relaxed(i, v); in raw_atomic64_fetch_and_relaxed()
3640 return arch_atomic64_fetch_and(i, v); in raw_atomic64_fetch_and_relaxed()
3649 * @v: pointer to atomic64_t
3651 * Atomically updates @v to (@v & ~@i) with relaxed ordering.
3658 raw_atomic64_andnot(s64 i, atomic64_t *v) in raw_atomic64_andnot() argument
3661 arch_atomic64_andnot(i, v); in raw_atomic64_andnot()
3663 raw_atomic64_and(~i, v); in raw_atomic64_andnot()
3670 * @v: pointer to atomic64_t
3672 * Atomically updates @v to (@v & ~@i) with full ordering.
3676 * Return: The original value of @v.
3679 raw_atomic64_fetch_andnot(s64 i, atomic64_t *v) in raw_atomic64_fetch_andnot() argument
3682 return arch_atomic64_fetch_andnot(i, v); in raw_atomic64_fetch_andnot()
3686 ret = arch_atomic64_fetch_andnot_relaxed(i, v); in raw_atomic64_fetch_andnot()
3690 return raw_atomic64_fetch_and(~i, v); in raw_atomic64_fetch_andnot()
3697 * @v: pointer to atomic64_t
3699 * Atomically updates @v to (@v & ~@i) with acquire ordering.
3703 * Return: The original value of @v.
3706 raw_atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_andnot_acquire() argument
3709 return arch_atomic64_fetch_andnot_acquire(i, v); in raw_atomic64_fetch_andnot_acquire()
3711 s64 ret = arch_atomic64_fetch_andnot_relaxed(i, v); in raw_atomic64_fetch_andnot_acquire()
3715 return arch_atomic64_fetch_andnot(i, v); in raw_atomic64_fetch_andnot_acquire()
3717 return raw_atomic64_fetch_and_acquire(~i, v); in raw_atomic64_fetch_andnot_acquire()
3724 * @v: pointer to atomic64_t
3726 * Atomically updates @v to (@v & ~@i) with release ordering.
3730 * Return: The original value of @v.
3733 raw_atomic64_fetch_andnot_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_andnot_release() argument
3736 return arch_atomic64_fetch_andnot_release(i, v); in raw_atomic64_fetch_andnot_release()
3739 return arch_atomic64_fetch_andnot_relaxed(i, v); in raw_atomic64_fetch_andnot_release()
3741 return arch_atomic64_fetch_andnot(i, v); in raw_atomic64_fetch_andnot_release()
3743 return raw_atomic64_fetch_and_release(~i, v); in raw_atomic64_fetch_andnot_release()
3750 * @v: pointer to atomic64_t
3752 * Atomically updates @v to (@v & ~@i) with relaxed ordering.
3756 * Return: The original value of @v.
3759 raw_atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_andnot_relaxed() argument
3762 return arch_atomic64_fetch_andnot_relaxed(i, v); in raw_atomic64_fetch_andnot_relaxed()
3764 return arch_atomic64_fetch_andnot(i, v); in raw_atomic64_fetch_andnot_relaxed()
3766 return raw_atomic64_fetch_and_relaxed(~i, v); in raw_atomic64_fetch_andnot_relaxed()
3773 * @v: pointer to atomic64_t
3775 * Atomically updates @v to (@v | @i) with relaxed ordering.
3782 raw_atomic64_or(s64 i, atomic64_t *v) in raw_atomic64_or() argument
3784 arch_atomic64_or(i, v); in raw_atomic64_or()
3790 * @v: pointer to atomic64_t
3792 * Atomically updates @v to (@v | @i) with full ordering.
3796 * Return: The original value of @v.
3799 raw_atomic64_fetch_or(s64 i, atomic64_t *v) in raw_atomic64_fetch_or() argument
3802 return arch_atomic64_fetch_or(i, v); in raw_atomic64_fetch_or()
3806 ret = arch_atomic64_fetch_or_relaxed(i, v); in raw_atomic64_fetch_or()
3817 * @v: pointer to atomic64_t
3819 * Atomically updates @v to (@v | @i) with acquire ordering.
3823 * Return: The original value of @v.
3826 raw_atomic64_fetch_or_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_or_acquire() argument
3829 return arch_atomic64_fetch_or_acquire(i, v); in raw_atomic64_fetch_or_acquire()
3831 s64 ret = arch_atomic64_fetch_or_relaxed(i, v); in raw_atomic64_fetch_or_acquire()
3835 return arch_atomic64_fetch_or(i, v); in raw_atomic64_fetch_or_acquire()
3844 * @v: pointer to atomic64_t
3846 * Atomically updates @v to (@v | @i) with release ordering.
3850 * Return: The original value of @v.
3853 raw_atomic64_fetch_or_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_or_release() argument
3856 return arch_atomic64_fetch_or_release(i, v); in raw_atomic64_fetch_or_release()
3859 return arch_atomic64_fetch_or_relaxed(i, v); in raw_atomic64_fetch_or_release()
3861 return arch_atomic64_fetch_or(i, v); in raw_atomic64_fetch_or_release()
3870 * @v: pointer to atomic64_t
3872 * Atomically updates @v to (@v | @i) with relaxed ordering.
3876 * Return: The original value of @v.
3879 raw_atomic64_fetch_or_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_or_relaxed() argument
3882 return arch_atomic64_fetch_or_relaxed(i, v); in raw_atomic64_fetch_or_relaxed()
3884 return arch_atomic64_fetch_or(i, v); in raw_atomic64_fetch_or_relaxed()
3893 * @v: pointer to atomic64_t
3895 * Atomically updates @v to (@v ^ @i) with relaxed ordering.
3902 raw_atomic64_xor(s64 i, atomic64_t *v) in raw_atomic64_xor() argument
3904 arch_atomic64_xor(i, v); in raw_atomic64_xor()
3910 * @v: pointer to atomic64_t
3912 * Atomically updates @v to (@v ^ @i) with full ordering.
3916 * Return: The original value of @v.
3919 raw_atomic64_fetch_xor(s64 i, atomic64_t *v) in raw_atomic64_fetch_xor() argument
3922 return arch_atomic64_fetch_xor(i, v); in raw_atomic64_fetch_xor()
3926 ret = arch_atomic64_fetch_xor_relaxed(i, v); in raw_atomic64_fetch_xor()
3937 * @v: pointer to atomic64_t
3939 * Atomically updates @v to (@v ^ @i) with acquire ordering.
3943 * Return: The original value of @v.
3946 raw_atomic64_fetch_xor_acquire(s64 i, atomic64_t *v) in raw_atomic64_fetch_xor_acquire() argument
3949 return arch_atomic64_fetch_xor_acquire(i, v); in raw_atomic64_fetch_xor_acquire()
3951 s64 ret = arch_atomic64_fetch_xor_relaxed(i, v); in raw_atomic64_fetch_xor_acquire()
3955 return arch_atomic64_fetch_xor(i, v); in raw_atomic64_fetch_xor_acquire()
3964 * @v: pointer to atomic64_t
3966 * Atomically updates @v to (@v ^ @i) with release ordering.
3970 * Return: The original value of @v.
3973 raw_atomic64_fetch_xor_release(s64 i, atomic64_t *v) in raw_atomic64_fetch_xor_release() argument
3976 return arch_atomic64_fetch_xor_release(i, v); in raw_atomic64_fetch_xor_release()
3979 return arch_atomic64_fetch_xor_relaxed(i, v); in raw_atomic64_fetch_xor_release()
3981 return arch_atomic64_fetch_xor(i, v); in raw_atomic64_fetch_xor_release()
3990 * @v: pointer to atomic64_t
3992 * Atomically updates @v to (@v ^ @i) with relaxed ordering.
3996 * Return: The original value of @v.
3999 raw_atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v) in raw_atomic64_fetch_xor_relaxed() argument
4002 return arch_atomic64_fetch_xor_relaxed(i, v); in raw_atomic64_fetch_xor_relaxed()
4004 return arch_atomic64_fetch_xor(i, v); in raw_atomic64_fetch_xor_relaxed()
4012 * @v: pointer to atomic64_t
4015 * Atomically updates @v to @new with full ordering.
4019 * Return: The original value of @v.
4022 raw_atomic64_xchg(atomic64_t *v, s64 new) in raw_atomic64_xchg() argument
4025 return arch_atomic64_xchg(v, new); in raw_atomic64_xchg()
4029 ret = arch_atomic64_xchg_relaxed(v, new); in raw_atomic64_xchg()
4033 return raw_xchg(&v->counter, new); in raw_atomic64_xchg()
4039 * @v: pointer to atomic64_t
4042 * Atomically updates @v to @new with acquire ordering.
4046 * Return: The original value of @v.
4049 raw_atomic64_xchg_acquire(atomic64_t *v, s64 new) in raw_atomic64_xchg_acquire() argument
4052 return arch_atomic64_xchg_acquire(v, new); in raw_atomic64_xchg_acquire()
4054 s64 ret = arch_atomic64_xchg_relaxed(v, new); in raw_atomic64_xchg_acquire()
4058 return arch_atomic64_xchg(v, new); in raw_atomic64_xchg_acquire()
4060 return raw_xchg_acquire(&v->counter, new); in raw_atomic64_xchg_acquire()
4066 * @v: pointer to atomic64_t
4069 * Atomically updates @v to @new with release ordering.
4073 * Return: The original value of @v.
4076 raw_atomic64_xchg_release(atomic64_t *v, s64 new) in raw_atomic64_xchg_release() argument
4079 return arch_atomic64_xchg_release(v, new); in raw_atomic64_xchg_release()
4082 return arch_atomic64_xchg_relaxed(v, new); in raw_atomic64_xchg_release()
4084 return arch_atomic64_xchg(v, new); in raw_atomic64_xchg_release()
4086 return raw_xchg_release(&v->counter, new); in raw_atomic64_xchg_release()
4092 * @v: pointer to atomic64_t
4095 * Atomically updates @v to @new with relaxed ordering.
4099 * Return: The original value of @v.
4102 raw_atomic64_xchg_relaxed(atomic64_t *v, s64 new) in raw_atomic64_xchg_relaxed() argument
4105 return arch_atomic64_xchg_relaxed(v, new); in raw_atomic64_xchg_relaxed()
4107 return arch_atomic64_xchg(v, new); in raw_atomic64_xchg_relaxed()
4109 return raw_xchg_relaxed(&v->counter, new); in raw_atomic64_xchg_relaxed()
4115 * @v: pointer to atomic64_t
4119 * If (@v == @old), atomically updates @v to @new with full ordering.
4123 * Return: The original value of @v.
4126 raw_atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) in raw_atomic64_cmpxchg() argument
4129 return arch_atomic64_cmpxchg(v, old, new); in raw_atomic64_cmpxchg()
4133 ret = arch_atomic64_cmpxchg_relaxed(v, old, new); in raw_atomic64_cmpxchg()
4137 return raw_cmpxchg(&v->counter, old, new); in raw_atomic64_cmpxchg()
4143 * @v: pointer to atomic64_t
4147 * If (@v == @old), atomically updates @v to @new with acquire ordering.
4151 * Return: The original value of @v.
4154 raw_atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new) in raw_atomic64_cmpxchg_acquire() argument
4157 return arch_atomic64_cmpxchg_acquire(v, old, new); in raw_atomic64_cmpxchg_acquire()
4159 s64 ret = arch_atomic64_cmpxchg_relaxed(v, old, new); in raw_atomic64_cmpxchg_acquire()
4163 return arch_atomic64_cmpxchg(v, old, new); in raw_atomic64_cmpxchg_acquire()
4165 return raw_cmpxchg_acquire(&v->counter, old, new); in raw_atomic64_cmpxchg_acquire()
4171 * @v: pointer to atomic64_t
4175 * If (@v == @old), atomically updates @v to @new with release ordering.
4179 * Return: The original value of @v.
4182 raw_atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new) in raw_atomic64_cmpxchg_release() argument
4185 return arch_atomic64_cmpxchg_release(v, old, new); in raw_atomic64_cmpxchg_release()
4188 return arch_atomic64_cmpxchg_relaxed(v, old, new); in raw_atomic64_cmpxchg_release()
4190 return arch_atomic64_cmpxchg(v, old, new); in raw_atomic64_cmpxchg_release()
4192 return raw_cmpxchg_release(&v->counter, old, new); in raw_atomic64_cmpxchg_release()
4198 * @v: pointer to atomic64_t
4202 * If (@v == @old), atomically updates @v to @new with relaxed ordering.
4206 * Return: The original value of @v.
4209 raw_atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new) in raw_atomic64_cmpxchg_relaxed() argument
4212 return arch_atomic64_cmpxchg_relaxed(v, old, new); in raw_atomic64_cmpxchg_relaxed()
4214 return arch_atomic64_cmpxchg(v, old, new); in raw_atomic64_cmpxchg_relaxed()
4216 return raw_cmpxchg_relaxed(&v->counter, old, new); in raw_atomic64_cmpxchg_relaxed()
4222 * @v: pointer to atomic64_t
4226 * If (@v == @old), atomically updates @v to @new with full ordering.
4227 * Otherwise, updates @old to the current value of @v.
4234 raw_atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) in raw_atomic64_try_cmpxchg() argument
4237 return arch_atomic64_try_cmpxchg(v, old, new); in raw_atomic64_try_cmpxchg()
4241 ret = arch_atomic64_try_cmpxchg_relaxed(v, old, new); in raw_atomic64_try_cmpxchg()
4246 r = raw_atomic64_cmpxchg(v, o, new); in raw_atomic64_try_cmpxchg()
4255 * @v: pointer to atomic64_t
4259 * If (@v == @old), atomically updates @v to @new with acquire ordering.
4260 * Otherwise, updates @old to the current value of @v.
4267 raw_atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new) in raw_atomic64_try_cmpxchg_acquire() argument
4270 return arch_atomic64_try_cmpxchg_acquire(v, old, new); in raw_atomic64_try_cmpxchg_acquire()
4272 bool ret = arch_atomic64_try_cmpxchg_relaxed(v, old, new); in raw_atomic64_try_cmpxchg_acquire()
4276 return arch_atomic64_try_cmpxchg(v, old, new); in raw_atomic64_try_cmpxchg_acquire()
4279 r = raw_atomic64_cmpxchg_acquire(v, o, new); in raw_atomic64_try_cmpxchg_acquire()
4288 * @v: pointer to atomic64_t
4292 * If (@v == @old), atomically updates @v to @new with release ordering.
4293 * Otherwise, updates @old to the current value of @v.
4300 raw_atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new) in raw_atomic64_try_cmpxchg_release() argument
4303 return arch_atomic64_try_cmpxchg_release(v, old, new); in raw_atomic64_try_cmpxchg_release()
4306 return arch_atomic64_try_cmpxchg_relaxed(v, old, new); in raw_atomic64_try_cmpxchg_release()
4308 return arch_atomic64_try_cmpxchg(v, old, new); in raw_atomic64_try_cmpxchg_release()
4311 r = raw_atomic64_cmpxchg_release(v, o, new); in raw_atomic64_try_cmpxchg_release()
4320 * @v: pointer to atomic64_t
4324 * If (@v == @old), atomically updates @v to @new with relaxed ordering.
4325 * Otherwise, updates @old to the current value of @v.
4332 raw_atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new) in raw_atomic64_try_cmpxchg_relaxed() argument
4335 return arch_atomic64_try_cmpxchg_relaxed(v, old, new); in raw_atomic64_try_cmpxchg_relaxed()
4337 return arch_atomic64_try_cmpxchg(v, old, new); in raw_atomic64_try_cmpxchg_relaxed()
4340 r = raw_atomic64_cmpxchg_relaxed(v, o, new); in raw_atomic64_try_cmpxchg_relaxed()
4350 * @v: pointer to atomic64_t
4352 * Atomically updates @v to (@v - @i) with full ordering.
4356 * Return: @true if the resulting value of @v is zero, @false otherwise.
4359 raw_atomic64_sub_and_test(s64 i, atomic64_t *v) in raw_atomic64_sub_and_test() argument
4362 return arch_atomic64_sub_and_test(i, v); in raw_atomic64_sub_and_test()
4364 return raw_atomic64_sub_return(i, v) == 0; in raw_atomic64_sub_and_test()
4370 * @v: pointer to atomic64_t
4372 * Atomically updates @v to (@v - 1) with full ordering.
4376 * Return: @true if the resulting value of @v is zero, @false otherwise.
4379 raw_atomic64_dec_and_test(atomic64_t *v) in raw_atomic64_dec_and_test() argument
4382 return arch_atomic64_dec_and_test(v); in raw_atomic64_dec_and_test()
4384 return raw_atomic64_dec_return(v) == 0; in raw_atomic64_dec_and_test()
4390 * @v: pointer to atomic64_t
4392 * Atomically updates @v to (@v + 1) with full ordering.
4396 * Return: @true if the resulting value of @v is zero, @false otherwise.
4399 raw_atomic64_inc_and_test(atomic64_t *v) in raw_atomic64_inc_and_test() argument
4402 return arch_atomic64_inc_and_test(v); in raw_atomic64_inc_and_test()
4404 return raw_atomic64_inc_return(v) == 0; in raw_atomic64_inc_and_test()
4411 * @v: pointer to atomic64_t
4413 * Atomically updates @v to (@v + @i) with full ordering.
4417 * Return: @true if the resulting value of @v is negative, @false otherwise.
4420 raw_atomic64_add_negative(s64 i, atomic64_t *v) in raw_atomic64_add_negative() argument
4423 return arch_atomic64_add_negative(i, v); in raw_atomic64_add_negative()
4427 ret = arch_atomic64_add_negative_relaxed(i, v); in raw_atomic64_add_negative()
4431 return raw_atomic64_add_return(i, v) < 0; in raw_atomic64_add_negative()
4438 * @v: pointer to atomic64_t
4440 * Atomically updates @v to (@v + @i) with acquire ordering.
4444 * Return: @true if the resulting value of @v is negative, @false otherwise.
4447 raw_atomic64_add_negative_acquire(s64 i, atomic64_t *v) in raw_atomic64_add_negative_acquire() argument
4450 return arch_atomic64_add_negative_acquire(i, v); in raw_atomic64_add_negative_acquire()
4452 bool ret = arch_atomic64_add_negative_relaxed(i, v); in raw_atomic64_add_negative_acquire()
4456 return arch_atomic64_add_negative(i, v); in raw_atomic64_add_negative_acquire()
4458 return raw_atomic64_add_return_acquire(i, v) < 0; in raw_atomic64_add_negative_acquire()
4465 * @v: pointer to atomic64_t
4467 * Atomically updates @v to (@v + @i) with release ordering.
4471 * Return: @true if the resulting value of @v is negative, @false otherwise.
4474 raw_atomic64_add_negative_release(s64 i, atomic64_t *v) in raw_atomic64_add_negative_release() argument
4477 return arch_atomic64_add_negative_release(i, v); in raw_atomic64_add_negative_release()
4480 return arch_atomic64_add_negative_relaxed(i, v); in raw_atomic64_add_negative_release()
4482 return arch_atomic64_add_negative(i, v); in raw_atomic64_add_negative_release()
4484 return raw_atomic64_add_return_release(i, v) < 0; in raw_atomic64_add_negative_release()
4491 * @v: pointer to atomic64_t
4493 * Atomically updates @v to (@v + @i) with relaxed ordering.
4497 * Return: @true if the resulting value of @v is negative, @false otherwise.
4500 raw_atomic64_add_negative_relaxed(s64 i, atomic64_t *v) in raw_atomic64_add_negative_relaxed() argument
4503 return arch_atomic64_add_negative_relaxed(i, v); in raw_atomic64_add_negative_relaxed()
4505 return arch_atomic64_add_negative(i, v); in raw_atomic64_add_negative_relaxed()
4507 return raw_atomic64_add_return_relaxed(i, v) < 0; in raw_atomic64_add_negative_relaxed()
4513 * @v: pointer to atomic64_t
4517 * If (@v != @u), atomically updates @v to (@v + @a) with full ordering.
4521 * Return: The original value of @v.
4524 raw_atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u) in raw_atomic64_fetch_add_unless() argument
4527 return arch_atomic64_fetch_add_unless(v, a, u); in raw_atomic64_fetch_add_unless()
4529 s64 c = raw_atomic64_read(v); in raw_atomic64_fetch_add_unless()
4534 } while (!raw_atomic64_try_cmpxchg(v, &c, c + a)); in raw_atomic64_fetch_add_unless()
4542 * @v: pointer to atomic64_t
4546 * If (@v != @u), atomically updates @v to (@v + @a) with full ordering.
4550 * Return: @true if @v was updated, @false otherwise.
4553 raw_atomic64_add_unless(atomic64_t *v, s64 a, s64 u) in raw_atomic64_add_unless() argument
4556 return arch_atomic64_add_unless(v, a, u); in raw_atomic64_add_unless()
4558 return raw_atomic64_fetch_add_unless(v, a, u) != u; in raw_atomic64_add_unless()
4564 * @v: pointer to atomic64_t
4566 * If (@v != 0), atomically updates @v to (@v + 1) with full ordering.
4570 * Return: @true if @v was updated, @false otherwise.
4573 raw_atomic64_inc_not_zero(atomic64_t *v) in raw_atomic64_inc_not_zero() argument
4576 return arch_atomic64_inc_not_zero(v); in raw_atomic64_inc_not_zero()
4578 return raw_atomic64_add_unless(v, 1, 0); in raw_atomic64_inc_not_zero()
4584 * @v: pointer to atomic64_t
4586 * If (@v >= 0), atomically updates @v to (@v + 1) with full ordering.
4590 * Return: @true if @v was updated, @false otherwise.
4593 raw_atomic64_inc_unless_negative(atomic64_t *v) in raw_atomic64_inc_unless_negative() argument
4596 return arch_atomic64_inc_unless_negative(v); in raw_atomic64_inc_unless_negative()
4598 s64 c = raw_atomic64_read(v); in raw_atomic64_inc_unless_negative()
4603 } while (!raw_atomic64_try_cmpxchg(v, &c, c + 1)); in raw_atomic64_inc_unless_negative()
4611 * @v: pointer to atomic64_t
4613 * If (@v <= 0), atomically updates @v to (@v - 1) with full ordering.
4617 * Return: @true if @v was updated, @false otherwise.
4620 raw_atomic64_dec_unless_positive(atomic64_t *v) in raw_atomic64_dec_unless_positive() argument
4623 return arch_atomic64_dec_unless_positive(v); in raw_atomic64_dec_unless_positive()
4625 s64 c = raw_atomic64_read(v); in raw_atomic64_dec_unless_positive()
4630 } while (!raw_atomic64_try_cmpxchg(v, &c, c - 1)); in raw_atomic64_dec_unless_positive()
4638 * @v: pointer to atomic64_t
4640 * If (@v > 0), atomically updates @v to (@v - 1) with full ordering.
4644 * Return: The old value of (@v - 1), regardless of whether @v was updated.
4647 raw_atomic64_dec_if_positive(atomic64_t *v) in raw_atomic64_dec_if_positive() argument
4650 return arch_atomic64_dec_if_positive(v); in raw_atomic64_dec_if_positive()
4652 s64 dec, c = raw_atomic64_read(v); in raw_atomic64_dec_if_positive()
4658 } while (!raw_atomic64_try_cmpxchg(v, &c, dec)); in raw_atomic64_dec_if_positive()