diff options
author | Elliott Hughes <enh@google.com> | 2012-08-10 15:38:50 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2012-08-11 10:04:00 -0700 |
commit | 6521a41dcf12ed9a7c038c42696695e22feb428b (patch) | |
tree | cc9c1b0865a56e95d6a05153332156f4208e29d3 /libcutils | |
parent | 605f8706c88b2cd5d024b0a6b7253a78d968ba72 (diff) | |
download | system_core-6521a41dcf12ed9a7c038c42696695e22feb428b.zip system_core-6521a41dcf12ed9a7c038c42696695e22feb428b.tar.gz system_core-6521a41dcf12ed9a7c038c42696695e22feb428b.tar.bz2 |
Remove system/core's remnants of SH support.
SH support is long dead.
Change-Id: I6be2763ca9f1ad8b3f9b09a8ad2f1d67f1e7f802
Diffstat (limited to 'libcutils')
-rw-r--r-- | libcutils/Android.mk | 4 | ||||
-rw-r--r-- | libcutils/atomic-android-sh.c | 137 |
2 files changed, 0 insertions, 141 deletions
diff --git a/libcutils/Android.mk b/libcutils/Android.mk index 5c227b6..35b5b46 100644 --- a/libcutils/Android.mk +++ b/libcutils/Android.mk @@ -129,16 +129,12 @@ LOCAL_SRC_FILES := $(commonSources) \ ifeq ($(TARGET_ARCH),arm) LOCAL_SRC_FILES += arch-arm/memset32.S else # !arm -ifeq ($(TARGET_ARCH),sh) -LOCAL_SRC_FILES += memory.c atomic-android-sh.c -else # !sh ifeq ($(TARGET_ARCH_VARIANT),x86-atom) LOCAL_CFLAGS += -DHAVE_MEMSET16 -DHAVE_MEMSET32 LOCAL_SRC_FILES += arch-x86/android_memset16.S arch-x86/android_memset32.S memory.c else # !x86-atom LOCAL_SRC_FILES += memory.c endif # !x86-atom -endif # !sh endif # !arm LOCAL_C_INCLUDES := $(libcutils_c_includes) $(KERNEL_HEADERS) diff --git a/libcutils/atomic-android-sh.c b/libcutils/atomic-android-sh.c deleted file mode 100644 index 8bac68a..0000000 --- a/libcutils/atomic-android-sh.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <cutils/atomic.h> -#ifdef HAVE_WIN32_THREADS -#include <windows.h> -#else -#include <sched.h> -#endif - -/* - * Note : - * - * (1) SuperH does not have CMPXCHG. It has only TAS for atomic - * operations. It does not seem a good idea to implement CMPXCHG, - * with TAS. So, we choose to implemnt these operations with - * posix mutexes. Please be sure that this might cause performance - * problem for Android-SH. Using LL/SC instructions supported in SH-X3, - * best performnace would be realized. - * - * (2) Mutex initialization problem happens, which is commented for - * ARM implementation, in this file above. - * We follow the fact that the initializer for mutex is a simple zero - * value. - * - * (3) These operations are NOT safe for SMP, as there is no currently - * no definition for a memory barrier operation. - */ - -#include <pthread.h> - -#define SWAP_LOCK_COUNT 32U -static pthread_mutex_t _swap_locks[SWAP_LOCK_COUNT]; - -#define SWAP_LOCK(addr) \ - &_swap_locks[((unsigned)(void*)(addr) >> 3U) % SWAP_LOCK_COUNT] - - -int32_t android_atomic_acquire_load(volatile const int32_t* addr) -{ - return *addr; -} - -int32_t android_atomic_release_load(volatile const int32_t* addr) -{ - return *addr; -} - -void android_atomic_acquire_store(int32_t value, volatile int32_t* addr) { - int32_t oldValue; - do { - oldValue = *addr; - } while (android_atomic_release_cas(oldValue, value, addr)); -} - -void android_atomic_release_store(int32_t value, volatile int32_t* addr) { - int32_t oldValue; - do { - oldValue = *addr; - } while (android_atomic_release_cas(oldValue, value, addr)); -} - -int32_t android_atomic_inc(volatile int32_t* addr) { - int32_t oldValue; - do { - oldValue = *addr; - } while (android_atomic_release_cas(oldValue, oldValue+1, addr)); - return oldValue; -} - -int32_t android_atomic_dec(volatile int32_t* addr) { - int32_t oldValue; - do { - oldValue = *addr; - } while (android_atomic_release_cas(oldValue, oldValue-1, addr)); - return oldValue; -} - -int32_t android_atomic_add(int32_t value, volatile int32_t* addr) { - int32_t oldValue; - do { - oldValue = *addr; - } while (android_atomic_release_cas(oldValue, oldValue+value, addr)); - return oldValue; -} - -int32_t android_atomic_and(int32_t value, volatile int32_t* addr) { - int32_t oldValue; - do { - oldValue = *addr; - } while (android_atomic_release_cas(oldValue, oldValue&value, addr)); - return oldValue; -} - -int32_t android_atomic_or(int32_t value, volatile int32_t* addr) { - int32_t oldValue; - do { - oldValue = *addr; - } while (android_atomic_release_cas(oldValue, oldValue|value, addr)); - return oldValue; -} - -int android_atomic_acquire_cmpxchg(int32_t oldvalue, int32_t newvalue, - volatile int32_t* addr) { - return android_atomic_release_cmpxchg(oldValue, newValue, addr); -} - -int android_atomic_release_cmpxchg(int32_t oldvalue, int32_t newvalue, - volatile int32_t* addr) { - int result; - pthread_mutex_t* lock = SWAP_LOCK(addr); - - pthread_mutex_lock(lock); - - if (*addr == oldvalue) { - *addr = newvalue; - result = 0; - } else { - result = 1; - } - pthread_mutex_unlock(lock); - return result; -} - |