at v5.13 1014 lines 21 kB view raw
1// SPDX-License-Identifier: GPL-2.0 2 3// Generated by scripts/atomic/gen-atomic-long.sh 4// DO NOT MODIFY THIS FILE DIRECTLY 5 6#ifndef _ASM_GENERIC_ATOMIC_LONG_H 7#define _ASM_GENERIC_ATOMIC_LONG_H 8 9#include <linux/compiler.h> 10#include <asm/types.h> 11 12#ifdef CONFIG_64BIT 13typedef atomic64_t atomic_long_t; 14#define ATOMIC_LONG_INIT(i) ATOMIC64_INIT(i) 15#define atomic_long_cond_read_acquire atomic64_cond_read_acquire 16#define atomic_long_cond_read_relaxed atomic64_cond_read_relaxed 17#else 18typedef atomic_t atomic_long_t; 19#define ATOMIC_LONG_INIT(i) ATOMIC_INIT(i) 20#define atomic_long_cond_read_acquire atomic_cond_read_acquire 21#define atomic_long_cond_read_relaxed atomic_cond_read_relaxed 22#endif 23 24#ifdef CONFIG_64BIT 25 26static __always_inline long 27atomic_long_read(const atomic_long_t *v) 28{ 29 return atomic64_read(v); 30} 31 32static __always_inline long 33atomic_long_read_acquire(const atomic_long_t *v) 34{ 35 return atomic64_read_acquire(v); 36} 37 38static __always_inline void 39atomic_long_set(atomic_long_t *v, long i) 40{ 41 atomic64_set(v, i); 42} 43 44static __always_inline void 45atomic_long_set_release(atomic_long_t *v, long i) 46{ 47 atomic64_set_release(v, i); 48} 49 50static __always_inline void 51atomic_long_add(long i, atomic_long_t *v) 52{ 53 atomic64_add(i, v); 54} 55 56static __always_inline long 57atomic_long_add_return(long i, atomic_long_t *v) 58{ 59 return atomic64_add_return(i, v); 60} 61 62static __always_inline long 63atomic_long_add_return_acquire(long i, atomic_long_t *v) 64{ 65 return atomic64_add_return_acquire(i, v); 66} 67 68static __always_inline long 69atomic_long_add_return_release(long i, atomic_long_t *v) 70{ 71 return atomic64_add_return_release(i, v); 72} 73 74static __always_inline long 75atomic_long_add_return_relaxed(long i, atomic_long_t *v) 76{ 77 return atomic64_add_return_relaxed(i, v); 78} 79 80static __always_inline long 81atomic_long_fetch_add(long i, atomic_long_t *v) 82{ 83 return atomic64_fetch_add(i, v); 84} 85 86static __always_inline long 87atomic_long_fetch_add_acquire(long i, atomic_long_t *v) 88{ 89 return atomic64_fetch_add_acquire(i, v); 90} 91 92static __always_inline long 93atomic_long_fetch_add_release(long i, atomic_long_t *v) 94{ 95 return atomic64_fetch_add_release(i, v); 96} 97 98static __always_inline long 99atomic_long_fetch_add_relaxed(long i, atomic_long_t *v) 100{ 101 return atomic64_fetch_add_relaxed(i, v); 102} 103 104static __always_inline void 105atomic_long_sub(long i, atomic_long_t *v) 106{ 107 atomic64_sub(i, v); 108} 109 110static __always_inline long 111atomic_long_sub_return(long i, atomic_long_t *v) 112{ 113 return atomic64_sub_return(i, v); 114} 115 116static __always_inline long 117atomic_long_sub_return_acquire(long i, atomic_long_t *v) 118{ 119 return atomic64_sub_return_acquire(i, v); 120} 121 122static __always_inline long 123atomic_long_sub_return_release(long i, atomic_long_t *v) 124{ 125 return atomic64_sub_return_release(i, v); 126} 127 128static __always_inline long 129atomic_long_sub_return_relaxed(long i, atomic_long_t *v) 130{ 131 return atomic64_sub_return_relaxed(i, v); 132} 133 134static __always_inline long 135atomic_long_fetch_sub(long i, atomic_long_t *v) 136{ 137 return atomic64_fetch_sub(i, v); 138} 139 140static __always_inline long 141atomic_long_fetch_sub_acquire(long i, atomic_long_t *v) 142{ 143 return atomic64_fetch_sub_acquire(i, v); 144} 145 146static __always_inline long 147atomic_long_fetch_sub_release(long i, atomic_long_t *v) 148{ 149 return atomic64_fetch_sub_release(i, v); 150} 151 152static __always_inline long 153atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v) 154{ 155 return atomic64_fetch_sub_relaxed(i, v); 156} 157 158static __always_inline void 159atomic_long_inc(atomic_long_t *v) 160{ 161 atomic64_inc(v); 162} 163 164static __always_inline long 165atomic_long_inc_return(atomic_long_t *v) 166{ 167 return atomic64_inc_return(v); 168} 169 170static __always_inline long 171atomic_long_inc_return_acquire(atomic_long_t *v) 172{ 173 return atomic64_inc_return_acquire(v); 174} 175 176static __always_inline long 177atomic_long_inc_return_release(atomic_long_t *v) 178{ 179 return atomic64_inc_return_release(v); 180} 181 182static __always_inline long 183atomic_long_inc_return_relaxed(atomic_long_t *v) 184{ 185 return atomic64_inc_return_relaxed(v); 186} 187 188static __always_inline long 189atomic_long_fetch_inc(atomic_long_t *v) 190{ 191 return atomic64_fetch_inc(v); 192} 193 194static __always_inline long 195atomic_long_fetch_inc_acquire(atomic_long_t *v) 196{ 197 return atomic64_fetch_inc_acquire(v); 198} 199 200static __always_inline long 201atomic_long_fetch_inc_release(atomic_long_t *v) 202{ 203 return atomic64_fetch_inc_release(v); 204} 205 206static __always_inline long 207atomic_long_fetch_inc_relaxed(atomic_long_t *v) 208{ 209 return atomic64_fetch_inc_relaxed(v); 210} 211 212static __always_inline void 213atomic_long_dec(atomic_long_t *v) 214{ 215 atomic64_dec(v); 216} 217 218static __always_inline long 219atomic_long_dec_return(atomic_long_t *v) 220{ 221 return atomic64_dec_return(v); 222} 223 224static __always_inline long 225atomic_long_dec_return_acquire(atomic_long_t *v) 226{ 227 return atomic64_dec_return_acquire(v); 228} 229 230static __always_inline long 231atomic_long_dec_return_release(atomic_long_t *v) 232{ 233 return atomic64_dec_return_release(v); 234} 235 236static __always_inline long 237atomic_long_dec_return_relaxed(atomic_long_t *v) 238{ 239 return atomic64_dec_return_relaxed(v); 240} 241 242static __always_inline long 243atomic_long_fetch_dec(atomic_long_t *v) 244{ 245 return atomic64_fetch_dec(v); 246} 247 248static __always_inline long 249atomic_long_fetch_dec_acquire(atomic_long_t *v) 250{ 251 return atomic64_fetch_dec_acquire(v); 252} 253 254static __always_inline long 255atomic_long_fetch_dec_release(atomic_long_t *v) 256{ 257 return atomic64_fetch_dec_release(v); 258} 259 260static __always_inline long 261atomic_long_fetch_dec_relaxed(atomic_long_t *v) 262{ 263 return atomic64_fetch_dec_relaxed(v); 264} 265 266static __always_inline void 267atomic_long_and(long i, atomic_long_t *v) 268{ 269 atomic64_and(i, v); 270} 271 272static __always_inline long 273atomic_long_fetch_and(long i, atomic_long_t *v) 274{ 275 return atomic64_fetch_and(i, v); 276} 277 278static __always_inline long 279atomic_long_fetch_and_acquire(long i, atomic_long_t *v) 280{ 281 return atomic64_fetch_and_acquire(i, v); 282} 283 284static __always_inline long 285atomic_long_fetch_and_release(long i, atomic_long_t *v) 286{ 287 return atomic64_fetch_and_release(i, v); 288} 289 290static __always_inline long 291atomic_long_fetch_and_relaxed(long i, atomic_long_t *v) 292{ 293 return atomic64_fetch_and_relaxed(i, v); 294} 295 296static __always_inline void 297atomic_long_andnot(long i, atomic_long_t *v) 298{ 299 atomic64_andnot(i, v); 300} 301 302static __always_inline long 303atomic_long_fetch_andnot(long i, atomic_long_t *v) 304{ 305 return atomic64_fetch_andnot(i, v); 306} 307 308static __always_inline long 309atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v) 310{ 311 return atomic64_fetch_andnot_acquire(i, v); 312} 313 314static __always_inline long 315atomic_long_fetch_andnot_release(long i, atomic_long_t *v) 316{ 317 return atomic64_fetch_andnot_release(i, v); 318} 319 320static __always_inline long 321atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v) 322{ 323 return atomic64_fetch_andnot_relaxed(i, v); 324} 325 326static __always_inline void 327atomic_long_or(long i, atomic_long_t *v) 328{ 329 atomic64_or(i, v); 330} 331 332static __always_inline long 333atomic_long_fetch_or(long i, atomic_long_t *v) 334{ 335 return atomic64_fetch_or(i, v); 336} 337 338static __always_inline long 339atomic_long_fetch_or_acquire(long i, atomic_long_t *v) 340{ 341 return atomic64_fetch_or_acquire(i, v); 342} 343 344static __always_inline long 345atomic_long_fetch_or_release(long i, atomic_long_t *v) 346{ 347 return atomic64_fetch_or_release(i, v); 348} 349 350static __always_inline long 351atomic_long_fetch_or_relaxed(long i, atomic_long_t *v) 352{ 353 return atomic64_fetch_or_relaxed(i, v); 354} 355 356static __always_inline void 357atomic_long_xor(long i, atomic_long_t *v) 358{ 359 atomic64_xor(i, v); 360} 361 362static __always_inline long 363atomic_long_fetch_xor(long i, atomic_long_t *v) 364{ 365 return atomic64_fetch_xor(i, v); 366} 367 368static __always_inline long 369atomic_long_fetch_xor_acquire(long i, atomic_long_t *v) 370{ 371 return atomic64_fetch_xor_acquire(i, v); 372} 373 374static __always_inline long 375atomic_long_fetch_xor_release(long i, atomic_long_t *v) 376{ 377 return atomic64_fetch_xor_release(i, v); 378} 379 380static __always_inline long 381atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v) 382{ 383 return atomic64_fetch_xor_relaxed(i, v); 384} 385 386static __always_inline long 387atomic_long_xchg(atomic_long_t *v, long i) 388{ 389 return atomic64_xchg(v, i); 390} 391 392static __always_inline long 393atomic_long_xchg_acquire(atomic_long_t *v, long i) 394{ 395 return atomic64_xchg_acquire(v, i); 396} 397 398static __always_inline long 399atomic_long_xchg_release(atomic_long_t *v, long i) 400{ 401 return atomic64_xchg_release(v, i); 402} 403 404static __always_inline long 405atomic_long_xchg_relaxed(atomic_long_t *v, long i) 406{ 407 return atomic64_xchg_relaxed(v, i); 408} 409 410static __always_inline long 411atomic_long_cmpxchg(atomic_long_t *v, long old, long new) 412{ 413 return atomic64_cmpxchg(v, old, new); 414} 415 416static __always_inline long 417atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new) 418{ 419 return atomic64_cmpxchg_acquire(v, old, new); 420} 421 422static __always_inline long 423atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new) 424{ 425 return atomic64_cmpxchg_release(v, old, new); 426} 427 428static __always_inline long 429atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new) 430{ 431 return atomic64_cmpxchg_relaxed(v, old, new); 432} 433 434static __always_inline bool 435atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new) 436{ 437 return atomic64_try_cmpxchg(v, (s64 *)old, new); 438} 439 440static __always_inline bool 441atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new) 442{ 443 return atomic64_try_cmpxchg_acquire(v, (s64 *)old, new); 444} 445 446static __always_inline bool 447atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new) 448{ 449 return atomic64_try_cmpxchg_release(v, (s64 *)old, new); 450} 451 452static __always_inline bool 453atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new) 454{ 455 return atomic64_try_cmpxchg_relaxed(v, (s64 *)old, new); 456} 457 458static __always_inline bool 459atomic_long_sub_and_test(long i, atomic_long_t *v) 460{ 461 return atomic64_sub_and_test(i, v); 462} 463 464static __always_inline bool 465atomic_long_dec_and_test(atomic_long_t *v) 466{ 467 return atomic64_dec_and_test(v); 468} 469 470static __always_inline bool 471atomic_long_inc_and_test(atomic_long_t *v) 472{ 473 return atomic64_inc_and_test(v); 474} 475 476static __always_inline bool 477atomic_long_add_negative(long i, atomic_long_t *v) 478{ 479 return atomic64_add_negative(i, v); 480} 481 482static __always_inline long 483atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u) 484{ 485 return atomic64_fetch_add_unless(v, a, u); 486} 487 488static __always_inline bool 489atomic_long_add_unless(atomic_long_t *v, long a, long u) 490{ 491 return atomic64_add_unless(v, a, u); 492} 493 494static __always_inline bool 495atomic_long_inc_not_zero(atomic_long_t *v) 496{ 497 return atomic64_inc_not_zero(v); 498} 499 500static __always_inline bool 501atomic_long_inc_unless_negative(atomic_long_t *v) 502{ 503 return atomic64_inc_unless_negative(v); 504} 505 506static __always_inline bool 507atomic_long_dec_unless_positive(atomic_long_t *v) 508{ 509 return atomic64_dec_unless_positive(v); 510} 511 512static __always_inline long 513atomic_long_dec_if_positive(atomic_long_t *v) 514{ 515 return atomic64_dec_if_positive(v); 516} 517 518#else /* CONFIG_64BIT */ 519 520static __always_inline long 521atomic_long_read(const atomic_long_t *v) 522{ 523 return atomic_read(v); 524} 525 526static __always_inline long 527atomic_long_read_acquire(const atomic_long_t *v) 528{ 529 return atomic_read_acquire(v); 530} 531 532static __always_inline void 533atomic_long_set(atomic_long_t *v, long i) 534{ 535 atomic_set(v, i); 536} 537 538static __always_inline void 539atomic_long_set_release(atomic_long_t *v, long i) 540{ 541 atomic_set_release(v, i); 542} 543 544static __always_inline void 545atomic_long_add(long i, atomic_long_t *v) 546{ 547 atomic_add(i, v); 548} 549 550static __always_inline long 551atomic_long_add_return(long i, atomic_long_t *v) 552{ 553 return atomic_add_return(i, v); 554} 555 556static __always_inline long 557atomic_long_add_return_acquire(long i, atomic_long_t *v) 558{ 559 return atomic_add_return_acquire(i, v); 560} 561 562static __always_inline long 563atomic_long_add_return_release(long i, atomic_long_t *v) 564{ 565 return atomic_add_return_release(i, v); 566} 567 568static __always_inline long 569atomic_long_add_return_relaxed(long i, atomic_long_t *v) 570{ 571 return atomic_add_return_relaxed(i, v); 572} 573 574static __always_inline long 575atomic_long_fetch_add(long i, atomic_long_t *v) 576{ 577 return atomic_fetch_add(i, v); 578} 579 580static __always_inline long 581atomic_long_fetch_add_acquire(long i, atomic_long_t *v) 582{ 583 return atomic_fetch_add_acquire(i, v); 584} 585 586static __always_inline long 587atomic_long_fetch_add_release(long i, atomic_long_t *v) 588{ 589 return atomic_fetch_add_release(i, v); 590} 591 592static __always_inline long 593atomic_long_fetch_add_relaxed(long i, atomic_long_t *v) 594{ 595 return atomic_fetch_add_relaxed(i, v); 596} 597 598static __always_inline void 599atomic_long_sub(long i, atomic_long_t *v) 600{ 601 atomic_sub(i, v); 602} 603 604static __always_inline long 605atomic_long_sub_return(long i, atomic_long_t *v) 606{ 607 return atomic_sub_return(i, v); 608} 609 610static __always_inline long 611atomic_long_sub_return_acquire(long i, atomic_long_t *v) 612{ 613 return atomic_sub_return_acquire(i, v); 614} 615 616static __always_inline long 617atomic_long_sub_return_release(long i, atomic_long_t *v) 618{ 619 return atomic_sub_return_release(i, v); 620} 621 622static __always_inline long 623atomic_long_sub_return_relaxed(long i, atomic_long_t *v) 624{ 625 return atomic_sub_return_relaxed(i, v); 626} 627 628static __always_inline long 629atomic_long_fetch_sub(long i, atomic_long_t *v) 630{ 631 return atomic_fetch_sub(i, v); 632} 633 634static __always_inline long 635atomic_long_fetch_sub_acquire(long i, atomic_long_t *v) 636{ 637 return atomic_fetch_sub_acquire(i, v); 638} 639 640static __always_inline long 641atomic_long_fetch_sub_release(long i, atomic_long_t *v) 642{ 643 return atomic_fetch_sub_release(i, v); 644} 645 646static __always_inline long 647atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v) 648{ 649 return atomic_fetch_sub_relaxed(i, v); 650} 651 652static __always_inline void 653atomic_long_inc(atomic_long_t *v) 654{ 655 atomic_inc(v); 656} 657 658static __always_inline long 659atomic_long_inc_return(atomic_long_t *v) 660{ 661 return atomic_inc_return(v); 662} 663 664static __always_inline long 665atomic_long_inc_return_acquire(atomic_long_t *v) 666{ 667 return atomic_inc_return_acquire(v); 668} 669 670static __always_inline long 671atomic_long_inc_return_release(atomic_long_t *v) 672{ 673 return atomic_inc_return_release(v); 674} 675 676static __always_inline long 677atomic_long_inc_return_relaxed(atomic_long_t *v) 678{ 679 return atomic_inc_return_relaxed(v); 680} 681 682static __always_inline long 683atomic_long_fetch_inc(atomic_long_t *v) 684{ 685 return atomic_fetch_inc(v); 686} 687 688static __always_inline long 689atomic_long_fetch_inc_acquire(atomic_long_t *v) 690{ 691 return atomic_fetch_inc_acquire(v); 692} 693 694static __always_inline long 695atomic_long_fetch_inc_release(atomic_long_t *v) 696{ 697 return atomic_fetch_inc_release(v); 698} 699 700static __always_inline long 701atomic_long_fetch_inc_relaxed(atomic_long_t *v) 702{ 703 return atomic_fetch_inc_relaxed(v); 704} 705 706static __always_inline void 707atomic_long_dec(atomic_long_t *v) 708{ 709 atomic_dec(v); 710} 711 712static __always_inline long 713atomic_long_dec_return(atomic_long_t *v) 714{ 715 return atomic_dec_return(v); 716} 717 718static __always_inline long 719atomic_long_dec_return_acquire(atomic_long_t *v) 720{ 721 return atomic_dec_return_acquire(v); 722} 723 724static __always_inline long 725atomic_long_dec_return_release(atomic_long_t *v) 726{ 727 return atomic_dec_return_release(v); 728} 729 730static __always_inline long 731atomic_long_dec_return_relaxed(atomic_long_t *v) 732{ 733 return atomic_dec_return_relaxed(v); 734} 735 736static __always_inline long 737atomic_long_fetch_dec(atomic_long_t *v) 738{ 739 return atomic_fetch_dec(v); 740} 741 742static __always_inline long 743atomic_long_fetch_dec_acquire(atomic_long_t *v) 744{ 745 return atomic_fetch_dec_acquire(v); 746} 747 748static __always_inline long 749atomic_long_fetch_dec_release(atomic_long_t *v) 750{ 751 return atomic_fetch_dec_release(v); 752} 753 754static __always_inline long 755atomic_long_fetch_dec_relaxed(atomic_long_t *v) 756{ 757 return atomic_fetch_dec_relaxed(v); 758} 759 760static __always_inline void 761atomic_long_and(long i, atomic_long_t *v) 762{ 763 atomic_and(i, v); 764} 765 766static __always_inline long 767atomic_long_fetch_and(long i, atomic_long_t *v) 768{ 769 return atomic_fetch_and(i, v); 770} 771 772static __always_inline long 773atomic_long_fetch_and_acquire(long i, atomic_long_t *v) 774{ 775 return atomic_fetch_and_acquire(i, v); 776} 777 778static __always_inline long 779atomic_long_fetch_and_release(long i, atomic_long_t *v) 780{ 781 return atomic_fetch_and_release(i, v); 782} 783 784static __always_inline long 785atomic_long_fetch_and_relaxed(long i, atomic_long_t *v) 786{ 787 return atomic_fetch_and_relaxed(i, v); 788} 789 790static __always_inline void 791atomic_long_andnot(long i, atomic_long_t *v) 792{ 793 atomic_andnot(i, v); 794} 795 796static __always_inline long 797atomic_long_fetch_andnot(long i, atomic_long_t *v) 798{ 799 return atomic_fetch_andnot(i, v); 800} 801 802static __always_inline long 803atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v) 804{ 805 return atomic_fetch_andnot_acquire(i, v); 806} 807 808static __always_inline long 809atomic_long_fetch_andnot_release(long i, atomic_long_t *v) 810{ 811 return atomic_fetch_andnot_release(i, v); 812} 813 814static __always_inline long 815atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v) 816{ 817 return atomic_fetch_andnot_relaxed(i, v); 818} 819 820static __always_inline void 821atomic_long_or(long i, atomic_long_t *v) 822{ 823 atomic_or(i, v); 824} 825 826static __always_inline long 827atomic_long_fetch_or(long i, atomic_long_t *v) 828{ 829 return atomic_fetch_or(i, v); 830} 831 832static __always_inline long 833atomic_long_fetch_or_acquire(long i, atomic_long_t *v) 834{ 835 return atomic_fetch_or_acquire(i, v); 836} 837 838static __always_inline long 839atomic_long_fetch_or_release(long i, atomic_long_t *v) 840{ 841 return atomic_fetch_or_release(i, v); 842} 843 844static __always_inline long 845atomic_long_fetch_or_relaxed(long i, atomic_long_t *v) 846{ 847 return atomic_fetch_or_relaxed(i, v); 848} 849 850static __always_inline void 851atomic_long_xor(long i, atomic_long_t *v) 852{ 853 atomic_xor(i, v); 854} 855 856static __always_inline long 857atomic_long_fetch_xor(long i, atomic_long_t *v) 858{ 859 return atomic_fetch_xor(i, v); 860} 861 862static __always_inline long 863atomic_long_fetch_xor_acquire(long i, atomic_long_t *v) 864{ 865 return atomic_fetch_xor_acquire(i, v); 866} 867 868static __always_inline long 869atomic_long_fetch_xor_release(long i, atomic_long_t *v) 870{ 871 return atomic_fetch_xor_release(i, v); 872} 873 874static __always_inline long 875atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v) 876{ 877 return atomic_fetch_xor_relaxed(i, v); 878} 879 880static __always_inline long 881atomic_long_xchg(atomic_long_t *v, long i) 882{ 883 return atomic_xchg(v, i); 884} 885 886static __always_inline long 887atomic_long_xchg_acquire(atomic_long_t *v, long i) 888{ 889 return atomic_xchg_acquire(v, i); 890} 891 892static __always_inline long 893atomic_long_xchg_release(atomic_long_t *v, long i) 894{ 895 return atomic_xchg_release(v, i); 896} 897 898static __always_inline long 899atomic_long_xchg_relaxed(atomic_long_t *v, long i) 900{ 901 return atomic_xchg_relaxed(v, i); 902} 903 904static __always_inline long 905atomic_long_cmpxchg(atomic_long_t *v, long old, long new) 906{ 907 return atomic_cmpxchg(v, old, new); 908} 909 910static __always_inline long 911atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new) 912{ 913 return atomic_cmpxchg_acquire(v, old, new); 914} 915 916static __always_inline long 917atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new) 918{ 919 return atomic_cmpxchg_release(v, old, new); 920} 921 922static __always_inline long 923atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new) 924{ 925 return atomic_cmpxchg_relaxed(v, old, new); 926} 927 928static __always_inline bool 929atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new) 930{ 931 return atomic_try_cmpxchg(v, (int *)old, new); 932} 933 934static __always_inline bool 935atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new) 936{ 937 return atomic_try_cmpxchg_acquire(v, (int *)old, new); 938} 939 940static __always_inline bool 941atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new) 942{ 943 return atomic_try_cmpxchg_release(v, (int *)old, new); 944} 945 946static __always_inline bool 947atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new) 948{ 949 return atomic_try_cmpxchg_relaxed(v, (int *)old, new); 950} 951 952static __always_inline bool 953atomic_long_sub_and_test(long i, atomic_long_t *v) 954{ 955 return atomic_sub_and_test(i, v); 956} 957 958static __always_inline bool 959atomic_long_dec_and_test(atomic_long_t *v) 960{ 961 return atomic_dec_and_test(v); 962} 963 964static __always_inline bool 965atomic_long_inc_and_test(atomic_long_t *v) 966{ 967 return atomic_inc_and_test(v); 968} 969 970static __always_inline bool 971atomic_long_add_negative(long i, atomic_long_t *v) 972{ 973 return atomic_add_negative(i, v); 974} 975 976static __always_inline long 977atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u) 978{ 979 return atomic_fetch_add_unless(v, a, u); 980} 981 982static __always_inline bool 983atomic_long_add_unless(atomic_long_t *v, long a, long u) 984{ 985 return atomic_add_unless(v, a, u); 986} 987 988static __always_inline bool 989atomic_long_inc_not_zero(atomic_long_t *v) 990{ 991 return atomic_inc_not_zero(v); 992} 993 994static __always_inline bool 995atomic_long_inc_unless_negative(atomic_long_t *v) 996{ 997 return atomic_inc_unless_negative(v); 998} 999 1000static __always_inline bool 1001atomic_long_dec_unless_positive(atomic_long_t *v) 1002{ 1003 return atomic_dec_unless_positive(v); 1004} 1005 1006static __always_inline long 1007atomic_long_dec_if_positive(atomic_long_t *v) 1008{ 1009 return atomic_dec_if_positive(v); 1010} 1011 1012#endif /* CONFIG_64BIT */ 1013#endif /* _ASM_GENERIC_ATOMIC_LONG_H */ 1014// a624200981f552b2c6be4f32fe44da8289f30d87