Andrew Geissler | 595f630 | 2022-01-24 19:11:47 +0000 | [diff] [blame] | 1 | From 64ad80e6d95871f17be4cd01da15581f41ac0b2b Mon Sep 17 00:00:00 2001 |
| 2 | From: Khem Raj <raj.khem@gmail.com> |
| 3 | Date: Mon, 27 May 2019 21:10:34 -0700 |
| 4 | Subject: [PATCH] riscv: Disable atomic operations |
| 5 | |
| 6 | This was ported from what was used with mozjs-60 which was |
| 7 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| 8 | |
| 9 | Upstream-Status: Inappropriate[old-version] |
| 10 | |
| 11 | Signed-off-by: Andreas MΓΌller <schnitzeltony@gmail.com> |
| 12 | --- |
| 13 | js/src/jit/AtomicOperations.h | 3 ++- |
| 14 | js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h | 8 ++++++++ |
| 15 | 2 files changed, 10 insertions(+), 1 deletion(-) |
| 16 | |
| 17 | diff --git a/js/src/jit/AtomicOperations.h b/js/src/jit/AtomicOperations.h |
| 18 | index 0486cba..cf6b91c 100644 |
| 19 | --- a/js/src/jit/AtomicOperations.h |
| 20 | +++ b/js/src/jit/AtomicOperations.h |
| 21 | @@ -391,7 +391,8 @@ inline bool AtomicOperations::isLockfreeJS(int32_t size) { |
| 22 | #elif defined(__ppc__) || defined(__PPC__) || defined(__sparc__) || \ |
| 23 | defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \ |
| 24 | defined(__PPC64LE__) || defined(__alpha__) || defined(__hppa__) || \ |
| 25 | - defined(__sh__) || defined(__s390__) || defined(__s390x__) |
| 26 | + defined(__sh__) || defined(__s390__) || defined(__s390x__) || \ |
| 27 | + defined(__riscv) |
| 28 | # include "jit/shared/AtomicOperations-feeling-lucky.h" |
| 29 | #else |
| 30 | # error "No AtomicOperations support provided for this platform" |
| 31 | diff --git a/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h b/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h |
| 32 | index f002cd4..14bb5f9 100644 |
| 33 | --- a/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h |
| 34 | +++ b/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h |
| 35 | @@ -77,6 +77,14 @@ |
| 36 | # endif |
| 37 | #endif |
| 38 | |
| 39 | +#ifdef __riscv |
| 40 | +# ifdef __riscv_xlen == 64 |
| 41 | +# define HAS_64BIT_ATOMICS |
| 42 | +# define HAS_64BIT_LOCKFREE |
| 43 | +# endif |
| 44 | +#endif |
| 45 | + |
| 46 | + |
| 47 | // The default implementation tactic for gcc/clang is to use the newer __atomic |
| 48 | // intrinsics added for use in C++11 <atomic>. Where that isn't available, we |
| 49 | // use GCC's older __sync functions instead. |
| 50 | -- |
| 51 | 2.31.1 |
| 52 | |