| From 6397a628955c28c2c65f3120b942eca4d64ce38e Mon Sep 17 00:00:00 2001 |
| From: Petri Gynther <pgynther@google.com> |
| Date: Fri, 12 Aug 2016 21:12:59 -0700 |
| Subject: [PATCH 2/2] uclibc: remove atomic stuff |
| |
| --- |
| package/uclibc/0001-uClibc-no-atomic.patch | 78 ++++++++++++++++++++++++++++++ |
| 1 file changed, 78 insertions(+) |
| create mode 100644 package/uclibc/0001-uClibc-no-atomic.patch |
| |
| diff --git a/package/uclibc/0001-uClibc-no-atomic.patch b/package/uclibc/0001-uClibc-no-atomic.patch |
| new file mode 100644 |
| index 0000000..41305ed |
| --- /dev/null |
| +++ b/package/uclibc/0001-uClibc-no-atomic.patch |
| @@ -0,0 +1,78 @@ |
| +diff --git a/Rules.mak b/Rules.mak |
| +index 405fe39..f78f5f9 100644 |
| +--- a/Rules.mak |
| ++++ b/Rules.mak |
| +@@ -496,7 +496,6 @@ ifeq ($(TARGET_ARCH),c6x) |
| + endif |
| + |
| + ifeq ($(TARGET_ARCH),arc) |
| +- CPU_CFLAGS-y += -mlock -mswape |
| + CPU_CFLAGS-$(CONFIG_ARC_CPU_700) += -mA7 |
| + CPU_CFLAGS-$(CONFIG_ARC_CPU_HS) += -mcpu=archs |
| + CPU_LDFLAGS-y += $(CPU_CFLAGS) -marclinux |
| +diff --git a/libc/sysdeps/linux/arc/bits/atomic.h b/libc/sysdeps/linux/arc/bits/atomic.h |
| +deleted file mode 100644 |
| +index 1fdc83f..0000000 |
| +--- a/libc/sysdeps/linux/arc/bits/atomic.h |
| ++++ /dev/null |
| +@@ -1,60 +0,0 @@ |
| +-/* |
| +- * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com) |
| +- * |
| +- * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball. |
| +- */ |
| +- |
| +-#include <stdint.h> |
| +-#include <sysdep.h> |
| +- |
| +-typedef int8_t atomic8_t; |
| +-typedef uint8_t uatomic8_t; |
| +-typedef int_fast8_t atomic_fast8_t; |
| +-typedef uint_fast8_t uatomic_fast8_t; |
| +- |
| +-typedef int32_t atomic32_t; |
| +-typedef uint32_t uatomic32_t; |
| +-typedef int_fast32_t atomic_fast32_t; |
| +-typedef uint_fast32_t uatomic_fast32_t; |
| +- |
| +-typedef intptr_t atomicptr_t; |
| +-typedef uintptr_t uatomicptr_t; |
| +-typedef intmax_t atomic_max_t; |
| +-typedef uintmax_t uatomic_max_t; |
| +- |
| +-void __arc_link_error (void); |
| +- |
| +-#ifdef __A7__ |
| +-#define atomic_full_barrier() __asm__ __volatile__("": : :"memory") |
| +-#else |
| +-#define atomic_full_barrier() __asm__ __volatile__("dmb 3": : :"memory") |
| +-#endif |
| +- |
| +-/* Atomic compare and exchange. */ |
| +- |
| +-#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \ |
| +- ({ __arc_link_error (); oldval; }) |
| +- |
| +-#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \ |
| +- ({ __arc_link_error (); oldval; }) |
| +- |
| +-#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \ |
| +- ({ \ |
| +- __typeof(oldval) prev; \ |
| +- \ |
| +- __asm__ __volatile__( \ |
| +- "1: llock %0, [%1] \n" \ |
| +- " brne %0, %2, 2f \n" \ |
| +- " scond %3, [%1] \n" \ |
| +- " bnz 1b \n" \ |
| +- "2: \n" \ |
| +- : "=&r"(prev) \ |
| +- : "r"(mem), "ir"(oldval), \ |
| +- "r"(newval) /* can't be "ir". scond can't take limm for "b" */\ |
| +- : "cc", "memory"); \ |
| +- \ |
| +- prev; \ |
| +- }) |
| +- |
| +-#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \ |
| +- ({ __arc_link_error (); oldval; }) |
| -- |
| 2.8.0.rc3.226.g39d4020 |
| |