mailing list of musl libc
 help / color / mirror / code / Atom feed
* [musl] [PATCH] arch/riscv*/atomic_arch.h: Check if atomic is supported
@ 2024-09-02 19:56 Jesse Taube
  2024-09-02 21:02 ` Rich Felker
  0 siblings, 1 reply; 2+ messages in thread
From: Jesse Taube @ 2024-09-02 19:56 UTC (permalink / raw)
  To: musl; +Cc: dalias, Jesse Taube

Define a_cas and a_cas_p only if atomic instructions are supported.

Signed-off-by: Jesse Taube <Mr.Bossman075@gmail.com>
---
 arch/riscv32/atomic_arch.h | 4 ++++
 arch/riscv64/atomic_arch.h | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/arch/riscv32/atomic_arch.h b/arch/riscv32/atomic_arch.h
index 4d418f63..331ce46e 100644
--- a/arch/riscv32/atomic_arch.h
+++ b/arch/riscv32/atomic_arch.h
@@ -4,6 +4,8 @@ static inline void a_barrier()
 	__asm__ __volatile__ ("fence rw,rw" : : : "memory");
 }
 
+#if defined(__riscv_a) || defined(__riscv_atomic)
+
 #define a_cas a_cas
 static inline int a_cas(volatile int *p, int t, int s)
 {
@@ -19,3 +21,5 @@ static inline int a_cas(volatile int *p, int t, int s)
 		: "memory");
 	return old;
 }
+
+#endif
diff --git a/arch/riscv64/atomic_arch.h b/arch/riscv64/atomic_arch.h
index 0c382588..dac972d2 100644
--- a/arch/riscv64/atomic_arch.h
+++ b/arch/riscv64/atomic_arch.h
@@ -4,6 +4,8 @@ static inline void a_barrier()
 	__asm__ __volatile__ ("fence rw,rw" : : : "memory");
 }
 
+#if defined(__riscv_a) || defined(__riscv_atomic)
+
 #define a_cas a_cas
 static inline int a_cas(volatile int *p, int t, int s)
 {
@@ -36,3 +38,5 @@ static inline void *a_cas_p(volatile void *p, void *t, void *s)
 		: "memory");
 	return old;
 }
+
+#endif
-- 
2.45.2


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [musl] [PATCH] arch/riscv*/atomic_arch.h: Check if atomic is supported
  2024-09-02 19:56 [musl] [PATCH] arch/riscv*/atomic_arch.h: Check if atomic is supported Jesse Taube
@ 2024-09-02 21:02 ` Rich Felker
  0 siblings, 0 replies; 2+ messages in thread
From: Rich Felker @ 2024-09-02 21:02 UTC (permalink / raw)
  To: Jesse Taube; +Cc: musl

On Mon, Sep 02, 2024 at 03:56:14PM -0400, Jesse Taube wrote:
> Define a_cas and a_cas_p only if atomic instructions are supported.
> 
> Signed-off-by: Jesse Taube <Mr.Bossman075@gmail.com>
> ---
>  arch/riscv32/atomic_arch.h | 4 ++++
>  arch/riscv64/atomic_arch.h | 4 ++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/arch/riscv32/atomic_arch.h b/arch/riscv32/atomic_arch.h
> index 4d418f63..331ce46e 100644
> --- a/arch/riscv32/atomic_arch.h
> +++ b/arch/riscv32/atomic_arch.h
> @@ -4,6 +4,8 @@ static inline void a_barrier()
>  	__asm__ __volatile__ ("fence rw,rw" : : : "memory");
>  }
>  
> +#if defined(__riscv_a) || defined(__riscv_atomic)
> +
>  #define a_cas a_cas
>  static inline int a_cas(volatile int *p, int t, int s)
>  {
> @@ -19,3 +21,5 @@ static inline int a_cas(volatile int *p, int t, int s)
>  		: "memory");
>  	return old;
>  }
> +
> +#endif
> diff --git a/arch/riscv64/atomic_arch.h b/arch/riscv64/atomic_arch.h
> index 0c382588..dac972d2 100644
> --- a/arch/riscv64/atomic_arch.h
> +++ b/arch/riscv64/atomic_arch.h
> @@ -4,6 +4,8 @@ static inline void a_barrier()
>  	__asm__ __volatile__ ("fence rw,rw" : : : "memory");
>  }
>  
> +#if defined(__riscv_a) || defined(__riscv_atomic)
> +
>  #define a_cas a_cas
>  static inline int a_cas(volatile int *p, int t, int s)
>  {
> @@ -36,3 +38,5 @@ static inline void *a_cas_p(volatile void *p, void *t, void *s)
>  		: "memory");
>  	return old;
>  }
> +
> +#endif
> -- 
> 2.45.2

These are a hard dependency. You can't just omit them. The build will
fail elsewhere without them, not to mention stuff blowing up at
runtime.

What is the actual problem you're trying to solve?

Rich

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-09-02 21:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-02 19:56 [musl] [PATCH] arch/riscv*/atomic_arch.h: Check if atomic is supported Jesse Taube
2024-09-02 21:02 ` Rich Felker

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).