diff options
author | Richard Braun <rbraun@sceen.net> | 2018-07-08 14:32:43 +0200 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2018-07-08 14:32:43 +0200 |
commit | 2e44231008cb831edd13325fc3dbd04de6ff9115 (patch) | |
tree | 15fbf18584a0f29c0a0cb07e460964a4f12ac63a | |
parent | 2c55123b8ce46aaf10d7ebda16cb46252e8facc5 (diff) |
kern/latomic: fix circular inclusions
-rw-r--r-- | kern/Makefile | 1 | ||||
-rw-r--r-- | kern/latomic.c | 398 | ||||
-rw-r--r-- | kern/latomic_i.h | 326 |
3 files changed, 457 insertions, 268 deletions
diff --git a/kern/Makefile b/kern/Makefile index ea7e3bff..1d9559f3 100644 --- a/kern/Makefile +++ b/kern/Makefile @@ -13,6 +13,7 @@ x15_SOURCES-y += \ kern/intr.c \ kern/kernel.c \ kern/kmem.c \ + kern/latomic.c \ kern/log.c \ kern/mutex.c \ kern/panic.c \ diff --git a/kern/latomic.c b/kern/latomic.c new file mode 100644 index 00000000..0f112858 --- /dev/null +++ b/kern/latomic.c @@ -0,0 +1,398 @@ +/* + * Copyright (c) 2018 Agustina Arzille. + * Copyright (c) 2018 Richard Braun. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * + * Architecture-specific code may override any of the type-specific + * functions by defining a macro of the same name. + */ + +#include <kern/atomic_types.h> +#include <kern/latomic.h> +#include <kern/latomic_i.h> +#include <kern/macros.h> +#include <machine/cpu.h> +#include <machine/latomic.h> + +#define latomic_swap_n(ptr, val) \ +MACRO_BEGIN \ + unsigned long flags_; \ + typeof(val) ret_; \ + \ + cpu_intr_save(&flags_); \ + ret_ = *(ptr); \ + *(ptr) = (val); \ + cpu_intr_restore(flags_); \ + \ + ret_; \ +MACRO_END + +#define latomic_cas_n(ptr, oval, nval) \ +MACRO_BEGIN \ + unsigned long flags_; \ + typeof(oval) ret_; \ + \ + cpu_intr_save(&flags_); \ + \ + ret_ = *(ptr); \ + \ + if (ret_ == (oval)) { \ + *(ptr) = (nval); \ + } \ + \ + cpu_intr_restore(flags_); \ + \ + ret_; \ +MACRO_END + +#define latomic_fetch_op_n(ptr, val, op) \ +MACRO_BEGIN \ + unsigned long flags_; \ + typeof(val) ret_; \ + \ + cpu_intr_save(&flags_); \ + ret_ = *(ptr); \ + *(ptr) = ret_ op (val); \ + cpu_intr_restore(flags_); \ + \ + ret_; \ +MACRO_END + +#define latomic_fetch_add_n(ptr, val) latomic_fetch_op_n(ptr, val, +) +#define latomic_fetch_sub_n(ptr, val) latomic_fetch_op_n(ptr, val, -) +#define latomic_fetch_and_n(ptr, val) latomic_fetch_op_n(ptr, val, &) +#define latomic_fetch_or_n(ptr, val) latomic_fetch_op_n(ptr, val, |) +#define latomic_fetch_xor_n(ptr, val) latomic_fetch_op_n(ptr, val, ^) + + +/* latomic_load */ + +#ifndef latomic_load_32 +unsigned int +latomic_load_32(union atomic_constptr_32 ptr, int memorder) +{ + return __atomic_load_n(ptr.ui_ptr, memorder); +} +#endif /* latomic_load_32 */ + +#ifndef latomic_load_64 +#ifdef __LP64__ +unsigned long long +latomic_load_64(union atomic_constptr_64 ptr, int memorder) +{ + return __atomic_load_n(ptr.ull_ptr, memorder); +} +#else /* __LP64__ */ +unsigned long long +latomic_load_64(union atomic_constptr_64 ptr, int memorder) +{ + unsigned long long ret; + unsigned long flags; + + (void)memorder; + + cpu_intr_save(&flags); + ret = *ptr.ull_ptr; + cpu_intr_restore(flags); + + return ret; +} +#endif /* __LP64__ */ +#endif /* latomic_load_64 */ + +/* latomic_store */ + +#ifndef latomic_store_32 +void +latomic_store_32(union atomic_ptr_32 ptr, union atomic_val_32 val, int memorder) +{ + __atomic_store_n(ptr.ui_ptr, val.ui, memorder); +} +#endif /* latomic_store_32 */ + +#ifndef latomic_store_64 +#ifdef __LP64__ +void +latomic_store_64(union atomic_ptr_64 ptr, union atomic_val_64 val, int memorder) +{ + return __atomic_store_n(ptr.ull_ptr, val.ull, memorder); +} +#else /* __LP64__ */ +void +latomic_store_64(union atomic_ptr_64 ptr, union atomic_val_64 val, int memorder) +{ + unsigned long flags; + + (void)memorder; + + cpu_intr_save(&flags); + *ptr.ull_ptr = val.ull; + cpu_intr_restore(flags); +} +#endif /* __LP64__ */ +#endif /* latomic_store_64 */ + +/* latomic_swap */ + +#ifndef latomic_swap_32 +unsigned int +latomic_swap_32(union atomic_ptr_32 ptr, union atomic_val_32 val, int memorder) +{ + (void)memorder; + return latomic_swap_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_swap_32 */ + +#ifndef latomic_swap_64 +unsigned long long +latomic_swap_64(union atomic_ptr_64 ptr, union atomic_val_64 val, int memorder) +{ + (void)memorder; + return latomic_swap_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_swap_64 */ + +/* latomic_cas */ + +#ifndef latomic_cas_32 +unsigned int +latomic_cas_32(union atomic_ptr_32 ptr, union atomic_val_32 oval, + union atomic_val_32 nval, int memorder) +{ + (void)memorder; + return latomic_cas_n(ptr.ui_ptr, oval.ui, nval.ui); +} +#endif /* latomic_cas_32 */ + +#ifndef latomic_cas_64 +unsigned long long +latomic_cas_64(union atomic_ptr_64 ptr, union atomic_val_64 oval, + union atomic_val_64 nval, int memorder) +{ + (void)memorder; + return latomic_cas_n(ptr.ull_ptr, oval.ull, nval.ull); +} +#endif /* latomic_cas_64 */ + +/* latomic_fetch_add */ + +#ifndef latomic_fetch_add_32 +unsigned int +latomic_fetch_add_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_add_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_fetch_add_32 */ + +#ifndef latomic_fetch_add_64 +unsigned long long +latomic_fetch_add_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_add_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_fetch_add_64 */ + +/* latomic_fetch_sub */ + +#ifndef latomic_fetch_sub_32 +unsigned int +latomic_fetch_sub_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_sub_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_fetch_sub_32 */ + +#ifndef latomic_fetch_sub_64 +unsigned long long +latomic_fetch_sub_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_sub_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_fetch_sub_64 */ + +/* latomic_fetch_and */ + +#ifndef latomic_fetch_and_32 +unsigned int +latomic_fetch_and_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_and_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_fetch_and_32 */ + +#ifndef latomic_fetch_and_64 +unsigned long long +latomic_fetch_and_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_and_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_fetch_and_64 */ + +/* latomic_fetch_or */ + +#ifndef latomic_fetch_or_32 +unsigned int +latomic_fetch_or_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_or_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_fetch_or_32 */ + +#ifndef latomic_fetch_or_64 +unsigned long long +latomic_fetch_or_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_or_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_fetch_or_64 */ + +/* latomic_fetch_xor */ + +#ifndef latomic_fetch_xor_32 +unsigned int +latomic_fetch_xor_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_xor_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_fetch_xor_32 */ + +#ifndef latomic_fetch_xor_64 +unsigned long long +latomic_fetch_xor_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder) +{ + (void)memorder; + return latomic_fetch_xor_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_fetch_xor_64 */ + +/* latomic_add */ + +#ifndef latomic_add_32 +void +latomic_add_32(union atomic_ptr_32 ptr, union atomic_val_32 val, int memorder) +{ + (void)memorder; + latomic_fetch_add_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_add_32 */ + +#ifndef latomic_add_64 +void +latomic_add_64(union atomic_ptr_64 ptr, union atomic_val_64 val, int memorder) +{ + (void)memorder; + latomic_fetch_add_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_add_64 */ + +/* latomic_sub */ + +#ifndef latomic_sub_32 +void +latomic_sub_32(union atomic_ptr_32 ptr, union atomic_val_32 val, int memorder) +{ + (void)memorder; + latomic_fetch_sub_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_sub_32 */ + +#ifndef latomic_sub_64 +void +latomic_sub_64(union atomic_ptr_64 ptr, union atomic_val_64 val, int memorder) +{ + (void)memorder; + latomic_fetch_sub_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_sub_64 */ + +/* latomic_and */ + +#ifndef latomic_and_32 +void +latomic_and_32(union atomic_ptr_32 ptr, union atomic_val_32 val, int memorder) +{ + (void)memorder; + latomic_fetch_and_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_and_32 */ + +#ifndef latomic_and_64 +void +latomic_and_64(union atomic_ptr_64 ptr, union atomic_val_64 val, int memorder) +{ + (void)memorder; + latomic_fetch_and_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_and_64 */ + +/* latomic_or */ + +#ifndef latomic_or_32 +void +latomic_or_32(union atomic_ptr_32 ptr, union atomic_val_32 val, int memorder) +{ + (void)memorder; + latomic_fetch_or_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_or_32 */ + +#ifndef latomic_or_64 +void +latomic_or_64(union atomic_ptr_64 ptr, union atomic_val_64 val, int memorder) +{ + (void)memorder; + latomic_fetch_or_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_or_64 */ + +/* latomic_xor */ + +#ifndef latomic_xor_32 +void +latomic_xor_32(union atomic_ptr_32 ptr, union atomic_val_32 val, int memorder) +{ + (void)memorder; + latomic_fetch_xor_n(ptr.ui_ptr, val.ui); +} +#endif /* latomic_xor_32 */ + +#ifndef latomic_xor_64 +void +latomic_xor_64(union atomic_ptr_64 ptr, union atomic_val_64 val, int memorder) +{ + (void)memorder; + latomic_fetch_xor_n(ptr.ull_ptr, val.ull); +} +#endif /* latomic_xor_64 */ diff --git a/kern/latomic_i.h b/kern/latomic_i.h index ea32cfd4..29c901ec 100644 --- a/kern/latomic_i.h +++ b/kern/latomic_i.h @@ -28,7 +28,6 @@ #include <kern/atomic_types.h> #include <kern/macros.h> -#include <machine/cpu.h> #include <machine/latomic.h> #define LATOMIC_ALIGN(ptr) MIN(sizeof(*(ptr)), sizeof(ptr)) @@ -56,89 +55,17 @@ _Generic(*(ptr), \ void latomic_invalid_type(void); -#define latomic_swap_n(ptr, val) \ -MACRO_BEGIN \ - unsigned long flags_; \ - typeof(val) ret_; \ - \ - cpu_intr_save(&flags_); \ - ret_ = *(ptr); \ - *(ptr) = (val); \ - cpu_intr_restore(flags_); \ - \ - ret_; \ -MACRO_END - -#define latomic_cas_n(ptr, oval, nval) \ -MACRO_BEGIN \ - unsigned long flags_; \ - typeof(oval) ret_; \ - \ - cpu_intr_save(&flags_); \ - \ - ret_ = *(ptr); \ - \ - if (ret_ == (oval)) { \ - *(ptr) = (nval); \ - } \ - \ - cpu_intr_restore(flags_); \ - \ - ret_; \ -MACRO_END - -#define latomic_fetch_op_n(ptr, val, op) \ -MACRO_BEGIN \ - unsigned long flags_; \ - typeof(val) ret_; \ - \ - cpu_intr_save(&flags_); \ - ret_ = *(ptr); \ - *(ptr) = ret_ op (val); \ - cpu_intr_restore(flags_); \ - \ - ret_; \ -MACRO_END - -#define latomic_fetch_add_n(ptr, val) latomic_fetch_op_n(ptr, val, +) -#define latomic_fetch_sub_n(ptr, val) latomic_fetch_op_n(ptr, val, -) -#define latomic_fetch_and_n(ptr, val) latomic_fetch_op_n(ptr, val, &) -#define latomic_fetch_or_n(ptr, val) latomic_fetch_op_n(ptr, val, |) -#define latomic_fetch_xor_n(ptr, val) latomic_fetch_op_n(ptr, val, ^) - - /* latomic_load */ #ifndef latomic_load_32 -static inline unsigned int -latomic_load_32(union atomic_constptr_32 ptr, int memorder) -{ - return __atomic_load_n(ptr.ui_ptr, memorder); -} +unsigned int latomic_load_32(union atomic_constptr_32 ptr, int memorder); #endif /* latomic_load_32 */ #ifndef latomic_load_64 #ifdef __LP64__ -static inline unsigned long long -latomic_load_64(union atomic_constptr_64 ptr, int memorder) -{ - return __atomic_load_n(ptr.ull_ptr, memorder); -} +unsigned long long latomic_load_64(union atomic_constptr_64 ptr, int memorder); #else /* __LP64__ */ -static inline unsigned long long -latomic_load_64(union atomic_constptr_64 ptr, int memorder) -{ - unsigned long long ret; - unsigned long flags; - - (void)memorder; - - cpu_intr_save(&flags); - ret = *ptr.ull_ptr; - cpu_intr_restore(flags); - - return ret; -} +unsigned long long latomic_load_64(union atomic_constptr_64 ptr, int memorder); #endif /* __LP64__ */ #endif /* latomic_load_64 */ @@ -154,35 +81,17 @@ latomic_load_64(union atomic_constptr_64 ptr, int memorder) /* latomic_store */ #ifndef latomic_store_32 -static inline void -latomic_store_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - __atomic_store_n(ptr.ui_ptr, val.ui, memorder); -} +void latomic_store_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder); #endif /* latomic_store_32 */ #ifndef latomic_store_64 #ifdef __LP64__ -static inline void -latomic_store_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - return __atomic_store_n(ptr.ull_ptr, val.ull, memorder); -} +void latomic_store_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder); #else /* __LP64__ */ -static inline void -latomic_store_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - unsigned long flags; - - (void)memorder; - - cpu_intr_save(&flags); - *ptr.ull_ptr = val.ull; - cpu_intr_restore(flags); -} +void latomic_store_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder); #endif /* __LP64__ */ #endif /* latomic_store_64 */ @@ -198,23 +107,13 @@ latomic_store_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_swap */ #ifndef latomic_swap_32 -static inline unsigned int -latomic_swap_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - return latomic_swap_n(ptr.ui_ptr, val.ui); -} +unsigned int latomic_swap_32(union atomic_ptr_32 ptr, + union atomic_val_32 val, int memorder); #endif /* latomic_swap_32 */ #ifndef latomic_swap_64 -static inline unsigned long long -latomic_swap_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - return latomic_swap_n(ptr.ull_ptr, val.ull); -} +unsigned long long latomic_swap_64(union atomic_ptr_64 ptr, + union atomic_val_64 val, int memorder); #endif /* latomic_swap_64 */ #ifdef __LP64__ @@ -229,23 +128,14 @@ latomic_swap_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_cas */ #ifndef latomic_cas_32 -static inline unsigned int -latomic_cas_32(union atomic_ptr_32 ptr, union atomic_val_32 oval, - union atomic_val_32 nval, int memorder) -{ - (void)memorder; - return latomic_cas_n(ptr.ui_ptr, oval.ui, nval.ui); -} +unsigned int latomic_cas_32(union atomic_ptr_32 ptr, union atomic_val_32 oval, + union atomic_val_32 nval, int memorder); #endif /* latomic_cas_32 */ #ifndef latomic_cas_64 -static inline unsigned long long -latomic_cas_64(union atomic_ptr_64 ptr, union atomic_val_64 oval, - union atomic_val_64 nval, int memorder) -{ - (void)memorder; - return latomic_cas_n(ptr.ull_ptr, oval.ull, nval.ull); -} +unsigned long long latomic_cas_64(union atomic_ptr_64 ptr, + union atomic_val_64 oval, + union atomic_val_64 nval, int memorder); #endif /* latomic_cas_64 */ #ifdef __LP64__ @@ -260,23 +150,13 @@ latomic_cas_64(union atomic_ptr_64 ptr, union atomic_val_64 oval, /* latomic_fetch_add */ #ifndef latomic_fetch_add_32 -static inline unsigned int -latomic_fetch_add_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_add_n(ptr.ui_ptr, val.ui); -} +unsigned int latomic_fetch_add_32(union atomic_ptr_32 ptr, + union atomic_val_32 val, int memorder); #endif /* latomic_fetch_add_32 */ #ifndef latomic_fetch_add_64 -static inline unsigned long long -latomic_fetch_add_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_add_n(ptr.ull_ptr, val.ull); -} +unsigned long long latomic_fetch_add_64(union atomic_ptr_64 ptr, + union atomic_val_64 val, int memorder); #endif /* latomic_fetch_add_64 */ #ifdef __LP64__ @@ -291,23 +171,13 @@ latomic_fetch_add_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_fetch_sub */ #ifndef latomic_fetch_sub_32 -static inline unsigned int -latomic_fetch_sub_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_sub_n(ptr.ui_ptr, val.ui); -} +unsigned int latomic_fetch_sub_32(union atomic_ptr_32 ptr, + union atomic_val_32 val, int memorder); #endif /* latomic_fetch_sub_32 */ #ifndef latomic_fetch_sub_64 -static inline unsigned long long -latomic_fetch_sub_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_sub_n(ptr.ull_ptr, val.ull); -} +unsigned long long latomic_fetch_sub_64(union atomic_ptr_64 ptr, + union atomic_val_64 val, int memorder); #endif /* latomic_fetch_sub_64 */ #ifdef __LP64__ @@ -322,23 +192,13 @@ latomic_fetch_sub_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_fetch_and */ #ifndef latomic_fetch_and_32 -static inline unsigned int -latomic_fetch_and_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_and_n(ptr.ui_ptr, val.ui); -} +unsigned int latomic_fetch_and_32(union atomic_ptr_32 ptr, + union atomic_val_32 val, int memorder); #endif /* latomic_fetch_and_32 */ #ifndef latomic_fetch_and_64 -static inline unsigned long long -latomic_fetch_and_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_and_n(ptr.ull_ptr, val.ull); -} +unsigned long long latomic_fetch_and_64(union atomic_ptr_64 ptr, + union atomic_val_64 val, int memorder); #endif /* latomic_fetch_and_64 */ #ifdef __LP64__ @@ -353,23 +213,13 @@ latomic_fetch_and_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_fetch_or */ #ifndef latomic_fetch_or_32 -static inline unsigned int -latomic_fetch_or_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_or_n(ptr.ui_ptr, val.ui); -} +unsigned int latomic_fetch_or_32(union atomic_ptr_32 ptr, + union atomic_val_32 val, int memorder); #endif /* latomic_fetch_or_32 */ #ifndef latomic_fetch_or_64 -static inline unsigned long long -latomic_fetch_or_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_or_n(ptr.ull_ptr, val.ull); -} +unsigned long long latomic_fetch_or_64(union atomic_ptr_64 ptr, + union atomic_val_64 val, int memorder); #endif /* latomic_fetch_or_64 */ #ifdef __LP64__ @@ -384,23 +234,13 @@ latomic_fetch_or_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_fetch_xor */ #ifndef latomic_fetch_xor_32 -static inline unsigned int -latomic_fetch_xor_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_xor_n(ptr.ui_ptr, val.ui); -} +unsigned int latomic_fetch_xor_32(union atomic_ptr_32 ptr, + union atomic_val_32 val, int memorder); #endif /* latomic_fetch_xor_32 */ #ifndef latomic_fetch_xor_64 -static inline unsigned long long -latomic_fetch_xor_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - return latomic_fetch_xor_n(ptr.ull_ptr, val.ull); -} +unsigned long long latomic_fetch_xor_64(union atomic_ptr_64 ptr, + union atomic_val_64 val, int memorder); #endif /* latomic_fetch_xor_64 */ #ifdef __LP64__ @@ -415,23 +255,13 @@ latomic_fetch_xor_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_add */ #ifndef latomic_add_32 -static inline void -latomic_add_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - latomic_fetch_add_n(ptr.ui_ptr, val.ui); -} +void latomic_add_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder); #endif /* latomic_add_32 */ #ifndef latomic_add_64 -static inline void -latomic_add_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - latomic_fetch_add_n(ptr.ull_ptr, val.ull); -} +void latomic_add_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder); #endif /* latomic_add_64 */ #ifdef __LP64__ @@ -446,23 +276,13 @@ latomic_add_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_sub */ #ifndef latomic_sub_32 -static inline void -latomic_sub_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - latomic_fetch_sub_n(ptr.ui_ptr, val.ui); -} +void latomic_sub_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder); #endif /* latomic_sub_32 */ #ifndef latomic_sub_64 -static inline void -latomic_sub_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - latomic_fetch_sub_n(ptr.ull_ptr, val.ull); -} +void latomic_sub_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder); #endif /* latomic_sub_64 */ #ifdef __LP64__ @@ -477,23 +297,13 @@ latomic_sub_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_and */ #ifndef latomic_and_32 -static inline void -latomic_and_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - latomic_fetch_and_n(ptr.ui_ptr, val.ui); -} +void latomic_and_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder); #endif /* latomic_and_32 */ #ifndef latomic_and_64 -static inline void -latomic_and_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - latomic_fetch_and_n(ptr.ull_ptr, val.ull); -} +void latomic_and_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder); #endif /* latomic_and_64 */ #ifdef __LP64__ @@ -508,23 +318,13 @@ latomic_and_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_or */ #ifndef latomic_or_32 -static inline void -latomic_or_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - latomic_fetch_or_n(ptr.ui_ptr, val.ui); -} +void latomic_or_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder); #endif /* latomic_or_32 */ #ifndef latomic_or_64 -static inline void -latomic_or_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - latomic_fetch_or_n(ptr.ull_ptr, val.ull); -} +void latomic_or_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder); #endif /* latomic_or_64 */ #ifdef __LP64__ @@ -539,23 +339,13 @@ latomic_or_64(union atomic_ptr_64 ptr, union atomic_val_64 val, /* latomic_xor */ #ifndef latomic_xor_32 -static inline void -latomic_xor_32(union atomic_ptr_32 ptr, union atomic_val_32 val, - int memorder) -{ - (void)memorder; - latomic_fetch_xor_n(ptr.ui_ptr, val.ui); -} +void latomic_xor_32(union atomic_ptr_32 ptr, union atomic_val_32 val, + int memorder); #endif /* latomic_xor_32 */ #ifndef latomic_xor_64 -static inline void -latomic_xor_64(union atomic_ptr_64 ptr, union atomic_val_64 val, - int memorder) -{ - (void)memorder; - latomic_fetch_xor_n(ptr.ull_ptr, val.ull); -} +void latomic_xor_64(union atomic_ptr_64 ptr, union atomic_val_64 val, + int memorder); #endif /* latomic_xor_64 */ #ifdef __LP64__ |