Hello community, here is the log from the commit of package ghc for openSUSE:Factory checked in at 2015-10-08 08:26:08 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc (Old) and /work/SRC/openSUSE:Factory/.ghc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc" Changes: -------- --- /work/SRC/openSUSE:Factory/ghc/ghc.changes 2015-10-06 13:27:39.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.ghc.new/ghc.changes 2015-10-08 08:26:13.000000000 +0200 @@ -1,0 +2,6 @@ +Mon Oct 5 07:47:58 UTC 2015 - [email protected] + +- atomic-cast.patch: fix signature of atomic bultins +- ghc-7.8-arm-use-ld-gold.patch: remove obsolete patch + +------------------------------------------------------------------- Old: ---- ghc-7.8-arm-use-ld-gold.patch New: ---- atomic-cast.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc.spec ++++++ --- /var/tmp/diff_new_pack.gSqC9z/_old 2015-10-08 08:26:14.000000000 +0200 +++ /var/tmp/diff_new_pack.gSqC9z/_new 2015-10-08 08:26:14.000000000 +0200 @@ -66,10 +66,10 @@ Requires: ghc-libraries = %{version}-%{release} Source: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.xz Source1: ghc-rpmlintrc +# PATCH-FIX-UPSTREAM fix signature of atomic builtins (#10926) +Patch1: atomic-cast.patch # PATCH-FEATURE-UPSTREAM 0001-implement-native-code-generator-for-ppc64.patch [email protected] -- Implement native code generator for ppc64. Haskell Trac #9863. Patch19: 0001-implement-native-code-generator-for-ppc64.patch -# PATCH-FIX-UPSTREAM [email protected] -- GNU ld does not work with ghc on aarch64 so use Gold. Adapted from Fedora patch 24. -Patch23: ghc-7.8-arm-use-ld-gold.patch # PATCH-FIX-OPENSUSE [email protected] -- remove-cur_term-usage.patch openSUSE's ncurses6 doesn't export cur_term function Patch24: remove-cur_term-usage.patch @@ -161,13 +161,10 @@ %prep %setup -q +%patch1 -p1 %patch19 -p1 %patch24 -p1 -#%%ifarch armv7hl aarch64 -#%%patch23 -p1 -b .24~ -#%%endif - %build # Patch 19 and 22 modify build system perl boot ++++++ atomic-cast.patch ++++++ >From e3d2bab86fc89113f8ee65800fdfac81d8d54851 Mon Sep 17 00:00:00 2001 From: Andreas Schwab <[email protected]> Date: Fri, 2 Oct 2015 23:03:12 +0200 Subject: [PATCH] Fix signature of atomic builtins This patch is due to Andreas Schwab. This fixes #10926, which reports (on AArch64) errors of the form, ``` /tmp/ghc1492_0/ghc_1.hc:2844:25: warning: passing argument 1 of 'hs_atomic_xor64' makes pointer from integer without a cast [-Wint-conversion] _c1Ho = hs_atomic_xor64((*Sp) + (((Sp[1]) << 0x3UL) + 0x10UL), Sp[2]); ^ In file included from /home/abuild/rpmbuild/BUILD/ghc-7.10.2/includes/Stg.h:273:0: 0, from /tmp/ghc1492_0/ghc_1.hc:3: /home/abuild/rpmbuild/BUILD/ghc-7.10.2/includes/stg/Prim.h:41:11: note: expected 'volatile StgWord64 * {aka volatile long unsigned int *}' but argument is of type 'long unsigned int' StgWord64 hs_atomic_xor64(volatile StgWord64 *x, StgWord64 val); ^ ``` Test Plan: Validate Reviewers: austin, simonmar Reviewed By: simonmar Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1300 GHC Trac Issues: #10926 --- includes/stg/Prim.h | 72 ++++++------ libraries/ghc-prim/cbits/atomic.c | 224 +++++++++++++++++++------------------- 2 files changed, 148 insertions(+), 148 deletions(-) Index: ghc-7.10.2/includes/stg/Prim.h =================================================================== --- ghc-7.10.2.orig/includes/stg/Prim.h +++ ghc-7.10.2/includes/stg/Prim.h @@ -15,42 +15,42 @@ #define PRIM_H /* libraries/ghc-prim/cbits/atomic.c */ -StgWord hs_atomic_add8(volatile StgWord8 *x, StgWord val); -StgWord hs_atomic_add16(volatile StgWord16 *x, StgWord val); -StgWord hs_atomic_add32(volatile StgWord32 *x, StgWord val); -StgWord64 hs_atomic_add64(volatile StgWord64 *x, StgWord64 val); -StgWord hs_atomic_sub8(volatile StgWord8 *x, StgWord val); -StgWord hs_atomic_sub16(volatile StgWord16 *x, StgWord val); -StgWord hs_atomic_sub32(volatile StgWord32 *x, StgWord val); -StgWord64 hs_atomic_sub64(volatile StgWord64 *x, StgWord64 val); -StgWord hs_atomic_and8(volatile StgWord8 *x, StgWord val); -StgWord hs_atomic_and16(volatile StgWord16 *x, StgWord val); -StgWord hs_atomic_and32(volatile StgWord32 *x, StgWord val); -StgWord64 hs_atomic_and64(volatile StgWord64 *x, StgWord64 val); -StgWord hs_atomic_nand8(volatile StgWord8 *x, StgWord val); -StgWord hs_atomic_nand16(volatile StgWord16 *x, StgWord val); -StgWord hs_atomic_nand32(volatile StgWord32 *x, StgWord val); -StgWord64 hs_atomic_nand64(volatile StgWord64 *x, StgWord64 val); -StgWord hs_atomic_or8(volatile StgWord8 *x, StgWord val); -StgWord hs_atomic_or16(volatile StgWord16 *x, StgWord val); -StgWord hs_atomic_or32(volatile StgWord32 *x, StgWord val); -StgWord64 hs_atomic_or64(volatile StgWord64 *x, StgWord64 val); -StgWord hs_atomic_xor8(volatile StgWord8 *x, StgWord val); -StgWord hs_atomic_xor16(volatile StgWord16 *x, StgWord val); -StgWord hs_atomic_xor32(volatile StgWord32 *x, StgWord val); -StgWord64 hs_atomic_xor64(volatile StgWord64 *x, StgWord64 val); -StgWord hs_cmpxchg8(volatile StgWord8 *x, StgWord old, StgWord new); -StgWord hs_cmpxchg16(volatile StgWord16 *x, StgWord old, StgWord new); -StgWord hs_cmpxchg32(volatile StgWord32 *x, StgWord old, StgWord new); -StgWord hs_cmpxchg64(volatile StgWord64 *x, StgWord64 old, StgWord64 new); -StgWord hs_atomicread8(volatile StgWord8 *x); -StgWord hs_atomicread16(volatile StgWord16 *x); -StgWord hs_atomicread32(volatile StgWord32 *x); -StgWord64 hs_atomicread64(volatile StgWord64 *x); -void hs_atomicwrite8(volatile StgWord8 *x, StgWord val); -void hs_atomicwrite16(volatile StgWord16 *x, StgWord val); -void hs_atomicwrite32(volatile StgWord32 *x, StgWord val); -void hs_atomicwrite64(volatile StgWord64 *x, StgWord64 val); +StgWord hs_atomic_add8(StgWord x, StgWord val); +StgWord hs_atomic_add16(StgWord x, StgWord val); +StgWord hs_atomic_add32(StgWord x, StgWord val); +StgWord64 hs_atomic_add64(StgWord x, StgWord64 val); +StgWord hs_atomic_sub8(StgWord x, StgWord val); +StgWord hs_atomic_sub16(StgWord x, StgWord val); +StgWord hs_atomic_sub32(StgWord x, StgWord val); +StgWord64 hs_atomic_sub64(StgWord x, StgWord64 val); +StgWord hs_atomic_and8(StgWord x, StgWord val); +StgWord hs_atomic_and16(StgWord x, StgWord val); +StgWord hs_atomic_and32(StgWord x, StgWord val); +StgWord64 hs_atomic_and64(StgWord x, StgWord64 val); +StgWord hs_atomic_nand8(StgWord x, StgWord val); +StgWord hs_atomic_nand16(StgWord x, StgWord val); +StgWord hs_atomic_nand32(StgWord x, StgWord val); +StgWord64 hs_atomic_nand64(StgWord x, StgWord64 val); +StgWord hs_atomic_or8(StgWord x, StgWord val); +StgWord hs_atomic_or16(StgWord x, StgWord val); +StgWord hs_atomic_or32(StgWord x, StgWord val); +StgWord64 hs_atomic_or64(StgWord x, StgWord64 val); +StgWord hs_atomic_xor8(StgWord x, StgWord val); +StgWord hs_atomic_xor16(StgWord x, StgWord val); +StgWord hs_atomic_xor32(StgWord x, StgWord val); +StgWord64 hs_atomic_xor64(StgWord x, StgWord64 val); +StgWord hs_cmpxchg8(StgWord x, StgWord old, StgWord new); +StgWord hs_cmpxchg16(StgWord x, StgWord old, StgWord new); +StgWord hs_cmpxchg32(StgWord x, StgWord old, StgWord new); +StgWord hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new); +StgWord hs_atomicread8(StgWord x); +StgWord hs_atomicread16(StgWord x); +StgWord hs_atomicread32(StgWord x); +StgWord64 hs_atomicread64(StgWord x); +void hs_atomicwrite8(StgWord x, StgWord val); +void hs_atomicwrite16(StgWord x, StgWord val); +void hs_atomicwrite32(StgWord x, StgWord val); +void hs_atomicwrite64(StgWord x, StgWord64 val); /* libraries/ghc-prim/cbits/bswap.c */ StgWord16 hs_bswap16(StgWord16 x); Index: ghc-7.10.2/libraries/ghc-prim/cbits/atomic.c =================================================================== --- ghc-7.10.2.orig/libraries/ghc-prim/cbits/atomic.c +++ ghc-7.10.2/libraries/ghc-prim/cbits/atomic.c @@ -11,97 +11,97 @@ // FetchAddByteArrayOp_Int -extern StgWord hs_atomic_add8(volatile StgWord8 *x, StgWord val); +extern StgWord hs_atomic_add8(StgWord x, StgWord val); StgWord -hs_atomic_add8(volatile StgWord8 *x, StgWord val) +hs_atomic_add8(StgWord x, StgWord val) { - return __sync_fetch_and_add(x, (StgWord8) val); + return __sync_fetch_and_add((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_add16(volatile StgWord16 *x, StgWord val); +extern StgWord hs_atomic_add16(StgWord x, StgWord val); StgWord -hs_atomic_add16(volatile StgWord16 *x, StgWord val) +hs_atomic_add16(StgWord x, StgWord val) { - return __sync_fetch_and_add(x, (StgWord16) val); + return __sync_fetch_and_add((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_add32(volatile StgWord32 *x, StgWord val); +extern StgWord hs_atomic_add32(StgWord x, StgWord val); StgWord -hs_atomic_add32(volatile StgWord32 *x, StgWord val) +hs_atomic_add32(StgWord x, StgWord val) { - return __sync_fetch_and_add(x, (StgWord32) val); + return __sync_fetch_and_add((volatile StgWord32 *) x, (StgWord32) val); } #if WORD_SIZE_IN_BITS == 64 -extern StgWord64 hs_atomic_add64(volatile StgWord64 *x, StgWord64 val); +extern StgWord64 hs_atomic_add64(StgWord x, StgWord64 val); StgWord64 -hs_atomic_add64(volatile StgWord64 *x, StgWord64 val) +hs_atomic_add64(StgWord x, StgWord64 val) { - return __sync_fetch_and_add(x, val); + return __sync_fetch_and_add((volatile StgWord64 *) x, val); } #endif // FetchSubByteArrayOp_Int -extern StgWord hs_atomic_sub8(volatile StgWord8 *x, StgWord val); +extern StgWord hs_atomic_sub8(StgWord x, StgWord val); StgWord -hs_atomic_sub8(volatile StgWord8 *x, StgWord val) +hs_atomic_sub8(StgWord x, StgWord val) { - return __sync_fetch_and_sub(x, (StgWord8) val); + return __sync_fetch_and_sub((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_sub16(volatile StgWord16 *x, StgWord val); +extern StgWord hs_atomic_sub16(StgWord x, StgWord val); StgWord -hs_atomic_sub16(volatile StgWord16 *x, StgWord val) +hs_atomic_sub16(StgWord x, StgWord val) { - return __sync_fetch_and_sub(x, (StgWord16) val); + return __sync_fetch_and_sub((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_sub32(volatile StgWord32 *x, StgWord val); +extern StgWord hs_atomic_sub32(StgWord x, StgWord val); StgWord -hs_atomic_sub32(volatile StgWord32 *x, StgWord val) +hs_atomic_sub32(StgWord x, StgWord val) { - return __sync_fetch_and_sub(x, (StgWord32) val); + return __sync_fetch_and_sub((volatile StgWord32 *) x, (StgWord32) val); } #if WORD_SIZE_IN_BITS == 64 -extern StgWord64 hs_atomic_sub64(volatile StgWord64 *x, StgWord64 val); +extern StgWord64 hs_atomic_sub64(StgWord x, StgWord64 val); StgWord64 -hs_atomic_sub64(volatile StgWord64 *x, StgWord64 val) +hs_atomic_sub64(StgWord x, StgWord64 val) { - return __sync_fetch_and_sub(x, val); + return __sync_fetch_and_sub((volatile StgWord64 *) x, val); } #endif // FetchAndByteArrayOp_Int -extern StgWord hs_atomic_and8(volatile StgWord8 *x, StgWord val); +extern StgWord hs_atomic_and8(StgWord x, StgWord val); StgWord -hs_atomic_and8(volatile StgWord8 *x, StgWord val) +hs_atomic_and8(StgWord x, StgWord val) { - return __sync_fetch_and_and(x, (StgWord8) val); + return __sync_fetch_and_and((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_and16(volatile StgWord16 *x, StgWord val); +extern StgWord hs_atomic_and16(StgWord x, StgWord val); StgWord -hs_atomic_and16(volatile StgWord16 *x, StgWord val) +hs_atomic_and16(StgWord x, StgWord val) { - return __sync_fetch_and_and(x, (StgWord16) val); + return __sync_fetch_and_and((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_and32(volatile StgWord32 *x, StgWord val); +extern StgWord hs_atomic_and32(StgWord x, StgWord val); StgWord -hs_atomic_and32(volatile StgWord32 *x, StgWord val) +hs_atomic_and32(StgWord x, StgWord val) { - return __sync_fetch_and_and(x, (StgWord32) val); + return __sync_fetch_and_and((volatile StgWord32 *) x, (StgWord32) val); } #if WORD_SIZE_IN_BITS == 64 -extern StgWord64 hs_atomic_and64(volatile StgWord64 *x, StgWord64 val); +extern StgWord64 hs_atomic_and64(StgWord x, StgWord64 val); StgWord64 -hs_atomic_and64(volatile StgWord64 *x, StgWord64 val) +hs_atomic_and64(StgWord x, StgWord64 val) { - return __sync_fetch_and_and(x, val); + return __sync_fetch_and_and((volatile StgWord64 *) x, val); } #endif @@ -117,204 +117,204 @@ hs_atomic_and64(volatile StgWord64 *x, S return tmp; \ } -extern StgWord hs_atomic_nand8(volatile StgWord8 *x, StgWord val); +extern StgWord hs_atomic_nand8(StgWord x, StgWord val); StgWord -hs_atomic_nand8(volatile StgWord8 *x, StgWord val) +hs_atomic_nand8(StgWord x, StgWord val) { #ifdef __clang__ - CAS_NAND(x, (StgWord8) val) + CAS_NAND((volatile StgWord8 *) x, (StgWord8) val) #else - return __sync_fetch_and_nand(x, (StgWord8) val); + return __sync_fetch_and_nand((volatile StgWord8 *) x, (StgWord8) val); #endif } -extern StgWord hs_atomic_nand16(volatile StgWord16 *x, StgWord val); +extern StgWord hs_atomic_nand16(StgWord x, StgWord val); StgWord -hs_atomic_nand16(volatile StgWord16 *x, StgWord val) +hs_atomic_nand16(StgWord x, StgWord val) { #ifdef __clang__ - CAS_NAND(x, (StgWord16) val); + CAS_NAND((volatile StgWord16 *) x, (StgWord16) val); #else - return __sync_fetch_and_nand(x, (StgWord16) val); + return __sync_fetch_and_nand((volatile StgWord16 *) x, (StgWord16) val); #endif } -extern StgWord hs_atomic_nand32(volatile StgWord32 *x, StgWord val); +extern StgWord hs_atomic_nand32(StgWord x, StgWord val); StgWord -hs_atomic_nand32(volatile StgWord32 *x, StgWord val) +hs_atomic_nand32(StgWord x, StgWord val) { #ifdef __clang__ - CAS_NAND(x, (StgWord32) val); + CAS_NAND((volatile StgWord32 *) x, (StgWord32) val); #else - return __sync_fetch_and_nand(x, (StgWord32) val); + return __sync_fetch_and_nand((volatile StgWord32 *) x, (StgWord32) val); #endif } #if WORD_SIZE_IN_BITS == 64 -extern StgWord64 hs_atomic_nand64(volatile StgWord64 *x, StgWord64 val); +extern StgWord64 hs_atomic_nand64(StgWord x, StgWord64 val); StgWord64 -hs_atomic_nand64(volatile StgWord64 *x, StgWord64 val) +hs_atomic_nand64(StgWord x, StgWord64 val) { #ifdef __clang__ - CAS_NAND(x, val); + CAS_NAND((volatile StgWord64 *) x, val); #else - return __sync_fetch_and_nand(x, val); + return __sync_fetch_and_nand((volatile StgWord64 *) x, val); #endif } #endif // FetchOrByteArrayOp_Int -extern StgWord hs_atomic_or8(volatile StgWord8 *x, StgWord val); +extern StgWord hs_atomic_or8(StgWord x, StgWord val); StgWord -hs_atomic_or8(volatile StgWord8 *x, StgWord val) +hs_atomic_or8(StgWord x, StgWord val) { - return __sync_fetch_and_or(x, (StgWord8) val); + return __sync_fetch_and_or((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_or16(volatile StgWord16 *x, StgWord val); +extern StgWord hs_atomic_or16(StgWord x, StgWord val); StgWord -hs_atomic_or16(volatile StgWord16 *x, StgWord val) +hs_atomic_or16(StgWord x, StgWord val) { - return __sync_fetch_and_or(x, (StgWord16) val); + return __sync_fetch_and_or((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_or32(volatile StgWord32 *x, StgWord val); +extern StgWord hs_atomic_or32(StgWord x, StgWord val); StgWord -hs_atomic_or32(volatile StgWord32 *x, StgWord val) +hs_atomic_or32(StgWord x, StgWord val) { - return __sync_fetch_and_or(x, (StgWord32) val); + return __sync_fetch_and_or((volatile StgWord32 *) x, (StgWord32) val); } #if WORD_SIZE_IN_BITS == 64 -extern StgWord64 hs_atomic_or64(volatile StgWord64 *x, StgWord64 val); +extern StgWord64 hs_atomic_or64(StgWord x, StgWord64 val); StgWord64 -hs_atomic_or64(volatile StgWord64 *x, StgWord64 val) +hs_atomic_or64(StgWord x, StgWord64 val) { - return __sync_fetch_and_or(x, val); + return __sync_fetch_and_or((volatile StgWord64 *) x, val); } #endif // FetchXorByteArrayOp_Int -extern StgWord hs_atomic_xor8(volatile StgWord8 *x, StgWord val); +extern StgWord hs_atomic_xor8(StgWord x, StgWord val); StgWord -hs_atomic_xor8(volatile StgWord8 *x, StgWord val) +hs_atomic_xor8(StgWord x, StgWord val) { - return __sync_fetch_and_xor(x, (StgWord8) val); + return __sync_fetch_and_xor((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_xor16(volatile StgWord16 *x, StgWord val); +extern StgWord hs_atomic_xor16(StgWord x, StgWord val); StgWord -hs_atomic_xor16(volatile StgWord16 *x, StgWord val) +hs_atomic_xor16(StgWord x, StgWord val) { - return __sync_fetch_and_xor(x, (StgWord16) val); + return __sync_fetch_and_xor((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_xor32(volatile StgWord32 *x, StgWord val); +extern StgWord hs_atomic_xor32(StgWord x, StgWord val); StgWord -hs_atomic_xor32(volatile StgWord32 *x, StgWord val) +hs_atomic_xor32(StgWord x, StgWord val) { - return __sync_fetch_and_xor(x, (StgWord32) val); + return __sync_fetch_and_xor((volatile StgWord32 *) x, (StgWord32) val); } #if WORD_SIZE_IN_BITS == 64 -extern StgWord64 hs_atomic_xor64(volatile StgWord64 *x, StgWord64 val); +extern StgWord64 hs_atomic_xor64(StgWord x, StgWord64 val); StgWord64 -hs_atomic_xor64(volatile StgWord64 *x, StgWord64 val) +hs_atomic_xor64(StgWord x, StgWord64 val) { - return __sync_fetch_and_xor(x, val); + return __sync_fetch_and_xor((volatile StgWord64 *) x, val); } #endif // CasByteArrayOp_Int -extern StgWord hs_cmpxchg8(volatile StgWord8 *x, StgWord old, StgWord new); +extern StgWord hs_cmpxchg8(StgWord x, StgWord old, StgWord new); StgWord -hs_cmpxchg8(volatile StgWord8 *x, StgWord old, StgWord new) +hs_cmpxchg8(StgWord x, StgWord old, StgWord new) { - return __sync_val_compare_and_swap(x, (StgWord8) old, (StgWord8) new); + return __sync_val_compare_and_swap((volatile StgWord8 *) x, (StgWord8) old, (StgWord8) new); } -extern StgWord hs_cmpxchg16(volatile StgWord16 *x, StgWord old, StgWord new); +extern StgWord hs_cmpxchg16(StgWord x, StgWord old, StgWord new); StgWord -hs_cmpxchg16(volatile StgWord16 *x, StgWord old, StgWord new) +hs_cmpxchg16(StgWord x, StgWord old, StgWord new) { - return __sync_val_compare_and_swap(x, (StgWord16) old, (StgWord16) new); + return __sync_val_compare_and_swap((volatile StgWord16 *) x, (StgWord16) old, (StgWord16) new); } -extern StgWord hs_cmpxchg32(volatile StgWord32 *x, StgWord old, StgWord new); +extern StgWord hs_cmpxchg32(StgWord x, StgWord old, StgWord new); StgWord -hs_cmpxchg32(volatile StgWord32 *x, StgWord old, StgWord new) +hs_cmpxchg32(StgWord x, StgWord old, StgWord new) { - return __sync_val_compare_and_swap(x, (StgWord32) old, (StgWord32) new); + return __sync_val_compare_and_swap((volatile StgWord32 *) x, (StgWord32) old, (StgWord32) new); } #if WORD_SIZE_IN_BITS == 64 -extern StgWord hs_cmpxchg64(volatile StgWord64 *x, StgWord64 old, StgWord64 new); +extern StgWord hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new); StgWord -hs_cmpxchg64(volatile StgWord64 *x, StgWord64 old, StgWord64 new) +hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new) { - return __sync_val_compare_and_swap(x, old, new); + return __sync_val_compare_and_swap((volatile StgWord64 *) x, old, new); } #endif // AtomicReadByteArrayOp_Int -extern StgWord hs_atomicread8(volatile StgWord8 *x); +extern StgWord hs_atomicread8(StgWord x); StgWord -hs_atomicread8(volatile StgWord8 *x) +hs_atomicread8(StgWord x) { - return *x; + return *(volatile StgWord8 *) x; } -extern StgWord hs_atomicread16(volatile StgWord16 *x); +extern StgWord hs_atomicread16(StgWord x); StgWord -hs_atomicread16(volatile StgWord16 *x) +hs_atomicread16(StgWord x) { - return *x; + return *(volatile StgWord16 *) x; } -extern StgWord hs_atomicread32(volatile StgWord32 *x); +extern StgWord hs_atomicread32(StgWord x); StgWord -hs_atomicread32(volatile StgWord32 *x) +hs_atomicread32(StgWord x) { - return *x; + return *(volatile StgWord32 *) x; } -extern StgWord64 hs_atomicread64(volatile StgWord64 *x); +extern StgWord64 hs_atomicread64(StgWord x); StgWord64 -hs_atomicread64(volatile StgWord64 *x) +hs_atomicread64(StgWord x) { - return *x; + return *(volatile StgWord64 *) x; } // AtomicWriteByteArrayOp_Int -extern void hs_atomicwrite8(volatile StgWord8 *x, StgWord val); +extern void hs_atomicwrite8(StgWord x, StgWord val); void -hs_atomicwrite8(volatile StgWord8 *x, StgWord val) +hs_atomicwrite8(StgWord x, StgWord val) { - *x = (StgWord8) val; + *(volatile StgWord8 *) x = (StgWord8) val; } -extern void hs_atomicwrite16(volatile StgWord16 *x, StgWord val); +extern void hs_atomicwrite16(StgWord x, StgWord val); void -hs_atomicwrite16(volatile StgWord16 *x, StgWord val) +hs_atomicwrite16(StgWord x, StgWord val) { - *x = (StgWord16) val; + *(volatile StgWord16 *) x = (StgWord16) val; } -extern void hs_atomicwrite32(volatile StgWord32 *x, StgWord val); +extern void hs_atomicwrite32(StgWord x, StgWord val); void -hs_atomicwrite32(volatile StgWord32 *x, StgWord val) +hs_atomicwrite32(StgWord x, StgWord val) { - *x = (StgWord32) val; + *(volatile StgWord32 *) x = (StgWord32) val; } -extern void hs_atomicwrite64(volatile StgWord64 *x, StgWord64 val); +extern void hs_atomicwrite64(StgWord x, StgWord64 val); void -hs_atomicwrite64(volatile StgWord64 *x, StgWord64 val) +hs_atomicwrite64(StgWord x, StgWord64 val) { - *x = (StgWord64) val; + *(volatile StgWord64 *) x = (StgWord64) val; }
