diff options
Diffstat (limited to 'pr/include/md/_linux.h')
-rw-r--r-- | pr/include/md/_linux.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/pr/include/md/_linux.h b/pr/include/md/_linux.h index a26291a8..ad57d083 100644 --- a/pr/include/md/_linux.h +++ b/pr/include/md/_linux.h @@ -73,6 +73,8 @@ #define _PR_SI_ARCHITECTURE "nds32" #elif defined(__xtensa__) #define _PR_SI_ARCHITECTURE "xtensa" +#elif defined(__loongarch64) +#define _PR_SI_ARCHITECTURE "loongarch64" #else #error "Unknown CPU architecture" #endif @@ -141,6 +143,18 @@ extern PRInt32 _PR_x86_64_AtomicSet(PRInt32 *val, PRInt32 newval); #define _MD_ATOMIC_SET _PR_x86_64_AtomicSet #endif +#if defined(__loongarch__) +#if defined(__GNUC__) +/* Use GCC built-in functions */ +#define _PR_HAVE_ATOMIC_OPS +#define _MD_INIT_ATOMIC() +#define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1) +#define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1) +#define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i) +#define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv) +#endif +#endif + #if defined(__or1k__) #if defined(__GNUC__) /* Use GCC built-in functions */ |