|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 12/12] xen/arm64: __cmpxchg and __cmpxchg_mb should always be inline
On Wed, 27 Mar 2019, Julien Grall wrote:
> Currently __cmpxchg_mb and __cmpxchg are only marked inline. The
> compiler is free to decide to not honor the inline. This will result to
> generate code use __bad_cmpxchg and lead a link failure.
>
> This was caught by Clang 8.0.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> ---
> xen/include/asm-arm/arm64/cmpxchg.h | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/xen/include/asm-arm/arm64/cmpxchg.h
> b/xen/include/asm-arm/arm64/cmpxchg.h
> index ae42b2f5ff..359271173e 100644
> --- a/xen/include/asm-arm/arm64/cmpxchg.h
> +++ b/xen/include/asm-arm/arm64/cmpxchg.h
> @@ -63,8 +63,9 @@ static inline unsigned long __xchg(unsigned long x,
> volatile void *ptr, int size
>
> extern void __bad_cmpxchg(volatile void *ptr, int size);
>
> -static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
> - unsigned long new, int size)
> +static always_inline unsigned long __cmpxchg(volatile void *ptr,
> + unsigned long old,
> + unsigned long new, int size)
> {
> unsigned long oldval = 0, res;
>
> @@ -137,8 +138,9 @@ static inline unsigned long __cmpxchg(volatile void *ptr,
> unsigned long old,
> return oldval;
> }
>
> -static inline unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long
> old,
> - unsigned long new, int size)
> +static always_inline unsigned long __cmpxchg_mb(volatile void *ptr,
> + unsigned long old,
> + unsigned long new, int size)
> {
> unsigned long ret;
>
> --
> 2.11.0
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |