aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.2.1-5666.3/libgomp/config/linux
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.2.1-5666.3/libgomp/config/linux')
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/alpha/futex.h76
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/bar.c64
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/bar.h75
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/ia64/futex.h71
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/lock.c182
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/mutex.c52
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/mutex.h63
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/omp-lock.h10
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/powerpc/futex.h70
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/s390/futex.h64
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/sem.c65
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/sem.h60
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/sparc/futex.h80
-rw-r--r--gcc-4.2.1-5666.3/libgomp/config/linux/x86/futex.h110
14 files changed, 0 insertions, 1042 deletions
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/alpha/futex.h b/gcc-4.2.1-5666.3/libgomp/config/linux/alpha/futex.h
deleted file mode 100644
index 98681a852..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/alpha/futex.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* Provide target-specific access to the futex system call. */
-
-#ifndef SYS_futex
-#define SYS_futex 394
-#endif
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-
-static inline void
-futex_wait (int *addr, int val)
-{
- register long sc_0 __asm__("$0");
- register long sc_16 __asm__("$16");
- register long sc_17 __asm__("$17");
- register long sc_18 __asm__("$18");
- register long sc_19 __asm__("$19");
-
- sc_0 = SYS_futex;
- sc_16 = (long) addr;
- sc_17 = FUTEX_WAIT;
- sc_18 = val;
- sc_19 = 0;
- __asm volatile ("callsys"
- : "=r" (sc_0), "=r"(sc_19)
- : "0"(sc_0), "r" (sc_16), "r"(sc_17), "r"(sc_18), "1"(sc_19)
- : "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",
- "$22", "$23", "$24", "$25", "$27", "$28", "memory");
-}
-
-static inline void
-futex_wake (int *addr, int count)
-{
- register long sc_0 __asm__("$0");
- register long sc_16 __asm__("$16");
- register long sc_17 __asm__("$17");
- register long sc_18 __asm__("$18");
- register long sc_19 __asm__("$19");
-
- sc_0 = SYS_futex;
- sc_16 = (long) addr;
- sc_17 = FUTEX_WAKE;
- sc_18 = count;
- __asm volatile ("callsys"
- : "=r" (sc_0), "=r"(sc_19)
- : "0"(sc_0), "r" (sc_16), "r"(sc_17), "r"(sc_18)
- : "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",
- "$22", "$23", "$24", "$25", "$27", "$28", "memory");
-}
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/bar.c b/gcc-4.2.1-5666.3/libgomp/config/linux/bar.c
deleted file mode 100644
index 5c4f32e6f..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/bar.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* This is a Linux specific implementation of a barrier synchronization
- mechanism for libgomp. This type is private to the library. This
- implementation uses atomic instructions and the futex syscall. */
-
-#include "libgomp.h"
-#include "futex.h"
-#include <limits.h>
-
-
-void
-gomp_barrier_wait_end (gomp_barrier_t *bar, bool last)
-{
- if (last)
- {
- bar->generation++;
- futex_wake (&bar->generation, INT_MAX);
- }
- else
- {
- unsigned int generation = bar->generation;
-
- gomp_mutex_unlock (&bar->mutex);
-
- do
- futex_wait (&bar->generation, generation);
- while (bar->generation == generation);
- }
-
- if (__sync_add_and_fetch (&bar->arrived, -1) == 0)
- gomp_mutex_unlock (&bar->mutex);
-}
-
-void
-gomp_barrier_wait (gomp_barrier_t *barrier)
-{
- gomp_barrier_wait_end (barrier, gomp_barrier_wait_start (barrier));
-}
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/bar.h b/gcc-4.2.1-5666.3/libgomp/config/linux/bar.h
deleted file mode 100644
index 57268585d..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/bar.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* This is a Linux specific implementation of a barrier synchronization
- mechanism for libgomp. This type is private to the library. This
- implementation uses atomic instructions and the futex syscall. */
-
-#ifndef GOMP_BARRIER_H
-#define GOMP_BARRIER_H 1
-
-#include "mutex.h"
-
-typedef struct
-{
- gomp_mutex_t mutex;
- unsigned total;
- unsigned arrived;
- int generation;
-} gomp_barrier_t;
-
-static inline void gomp_barrier_init (gomp_barrier_t *bar, unsigned count)
-{
- gomp_mutex_init (&bar->mutex);
- bar->total = count;
- bar->arrived = 0;
- bar->generation = 0;
-}
-
-static inline void gomp_barrier_reinit (gomp_barrier_t *bar, unsigned count)
-{
- gomp_mutex_lock (&bar->mutex);
- bar->total = count;
- gomp_mutex_unlock (&bar->mutex);
-}
-
-static inline void gomp_barrier_destroy (gomp_barrier_t *bar)
-{
- /* Before destroying, make sure all threads have left the barrier. */
- gomp_mutex_lock (&bar->mutex);
-}
-
-extern void gomp_barrier_wait (gomp_barrier_t *);
-extern void gomp_barrier_wait_end (gomp_barrier_t *, bool);
-
-static inline bool gomp_barrier_wait_start (gomp_barrier_t *bar)
-{
- gomp_mutex_lock (&bar->mutex);
- return ++bar->arrived == bar->total;
-}
-
-#endif /* GOMP_BARRIER_H */
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/ia64/futex.h b/gcc-4.2.1-5666.3/libgomp/config/linux/ia64/futex.h
deleted file mode 100644
index 5e54982d6..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/ia64/futex.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* Provide target-specific access to the futex system call. */
-
-#include <sys/syscall.h>
-
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-
-static inline void
-sys_futex0(int *addr, int op, int val)
-{
- register long out0 asm ("out0") = (long) addr;
- register long out1 asm ("out1") = op;
- register long out2 asm ("out2") = val;
- register long out3 asm ("out3") = 0;
- register long r15 asm ("r15") = SYS_futex;
-
- __asm __volatile ("break 0x100000"
- : "=r"(r15), "=r"(out0), "=r"(out1), "=r"(out2), "=r"(out3)
- : "r"(r15), "r"(out0), "r"(out1), "r"(out2), "r"(out3)
- : "memory", "r8", "r10", "out4", "out5", "out6", "out7",
- /* Non-stacked integer registers, minus r8, r10, r15. */
- "r2", "r3", "r9", "r11", "r12", "r13", "r14", "r16", "r17", "r18",
- "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27",
- "r28", "r29", "r30", "r31",
- /* Predicate registers. */
- "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15",
- /* Non-rotating fp registers. */
- "f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
- /* Branch registers. */
- "b6");
-}
-
-static inline void
-futex_wait (int *addr, int val)
-{
- sys_futex0 (addr, FUTEX_WAIT, val);
-}
-
-static inline void
-futex_wake (int *addr, int count)
-{
- sys_futex0 (addr, FUTEX_WAKE, count);
-}
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/lock.c b/gcc-4.2.1-5666.3/libgomp/config/linux/lock.c
deleted file mode 100644
index 211f6007b..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/lock.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* This is a Linux specific implementation of the public OpenMP locking
- primitives. This implementation uses atomic instructions and the futex
- syscall. */
-
-#include "libgomp.h"
-#include <string.h>
-#include <unistd.h>
-#include <sys/syscall.h>
-#include "futex.h"
-
-
-/* The internal gomp_mutex_t and the external non-recursive omp_lock_t
- have the same form. Re-use it. */
-
-void
-omp_init_lock (omp_lock_t *lock)
-{
- gomp_mutex_init (lock);
-}
-
-void
-omp_destroy_lock (omp_lock_t *lock)
-{
- gomp_mutex_destroy (lock);
-}
-
-void
-omp_set_lock (omp_lock_t *lock)
-{
- gomp_mutex_lock (lock);
-}
-
-void
-omp_unset_lock (omp_lock_t *lock)
-{
- gomp_mutex_unlock (lock);
-}
-
-int
-omp_test_lock (omp_lock_t *lock)
-{
- return __sync_bool_compare_and_swap (lock, 0, 1);
-}
-
-/* The external recursive omp_nest_lock_t form requires additional work. */
-
-/* We need an integer to uniquely identify this thread. Most generally
- this is the thread's TID, which ideally we'd get this straight from
- the TLS block where glibc keeps it. Unfortunately, we can't get at
- that directly.
-
- If we don't support (or have disabled) TLS, one function call is as
- good (or bad) as any other. Use the syscall all the time.
-
- On an ILP32 system (defined here as not LP64), we can make do with
- any thread-local pointer. Ideally we'd use the TLS base address,
- since that requires the least amount of arithmetic, but that's not
- always available directly. Make do with the gomp_thread pointer
- since it's handy. */
-
-#if !defined (HAVE_TLS)
-static inline int gomp_tid (void)
-{
- return syscall (SYS_gettid);
-}
-#elif !defined(__LP64__)
-static inline int gomp_tid (void)
-{
- return (int) gomp_thread ();
-}
-#else
-static __thread int tid_cache;
-static inline int gomp_tid (void)
-{
- int tid = tid_cache;
- if (__builtin_expect (tid == 0, 0))
- tid_cache = tid = syscall (SYS_gettid);
- return tid;
-}
-#endif
-
-
-void
-omp_init_nest_lock (omp_nest_lock_t *lock)
-{
- memset (lock, 0, sizeof (lock));
-}
-
-void
-omp_destroy_nest_lock (omp_nest_lock_t *lock)
-{
-}
-
-void
-omp_set_nest_lock (omp_nest_lock_t *lock)
-{
- int otid, tid = gomp_tid ();
-
- while (1)
- {
- otid = __sync_val_compare_and_swap (&lock->owner, 0, tid);
- if (otid == 0)
- {
- lock->count = 1;
- return;
- }
- if (otid == tid)
- {
- lock->count++;
- return;
- }
-
- futex_wait (&lock->owner, otid);
- }
-}
-
-void
-omp_unset_nest_lock (omp_nest_lock_t *lock)
-{
- /* ??? Validate that we own the lock here. */
-
- if (--lock->count == 0)
- {
- __sync_lock_release (&lock->owner);
- futex_wake (&lock->owner, 1);
- }
-}
-
-int
-omp_test_nest_lock (omp_nest_lock_t *lock)
-{
- int otid, tid = gomp_tid ();
-
- otid = __sync_val_compare_and_swap (&lock->owner, 0, tid);
- if (otid == 0)
- {
- lock->count = 1;
- return 1;
- }
- if (otid == tid)
- return ++lock->count;
-
- return 0;
-}
-
-ialias (omp_init_lock)
-ialias (omp_init_nest_lock)
-ialias (omp_destroy_lock)
-ialias (omp_destroy_nest_lock)
-ialias (omp_set_lock)
-ialias (omp_set_nest_lock)
-ialias (omp_unset_lock)
-ialias (omp_unset_nest_lock)
-ialias (omp_test_lock)
-ialias (omp_test_nest_lock)
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/mutex.c b/gcc-4.2.1-5666.3/libgomp/config/linux/mutex.c
deleted file mode 100644
index fa3dfd1cb..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/mutex.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* This is a Linux specific implementation of a mutex synchronization
- mechanism for libgomp. This type is private to the library. This
- implementation uses atomic instructions and the futex syscall. */
-
-#include "libgomp.h"
-#include "futex.h"
-
-
-void
-gomp_mutex_lock_slow (gomp_mutex_t *mutex)
-{
- do
- {
- int oldval = __sync_val_compare_and_swap (mutex, 1, 2);
- if (oldval != 0)
- futex_wait (mutex, 2);
- }
- while (!__sync_bool_compare_and_swap (mutex, 0, 2));
-}
-
-void
-gomp_mutex_unlock_slow (gomp_mutex_t *mutex)
-{
- futex_wake (mutex, 1);
-}
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/mutex.h b/gcc-4.2.1-5666.3/libgomp/config/linux/mutex.h
deleted file mode 100644
index 323814aa8..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/mutex.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* This is a Linux specific implementation of a mutex synchronization
- mechanism for libgomp. This type is private to the library. This
- implementation uses atomic instructions and the futex syscall. */
-
-#ifndef GOMP_MUTEX_H
-#define GOMP_MUTEX_H 1
-
-typedef int gomp_mutex_t;
-
-#define GOMP_MUTEX_INIT_0 1
-
-static inline void gomp_mutex_init (gomp_mutex_t *mutex)
-{
- *mutex = 0;
-}
-
-extern void gomp_mutex_lock_slow (gomp_mutex_t *mutex);
-static inline void gomp_mutex_lock (gomp_mutex_t *mutex)
-{
- if (!__sync_bool_compare_and_swap (mutex, 0, 1))
- gomp_mutex_lock_slow (mutex);
-}
-
-extern void gomp_mutex_unlock_slow (gomp_mutex_t *mutex);
-static inline void gomp_mutex_unlock (gomp_mutex_t *mutex)
-{
- int val = __sync_lock_test_and_set (mutex, 0);
- if (__builtin_expect (val > 1, 0))
- gomp_mutex_unlock_slow (mutex);
-}
-
-static inline void gomp_mutex_destroy (gomp_mutex_t *mutex)
-{
-}
-
-#endif /* GOMP_MUTEX_H */
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/omp-lock.h b/gcc-4.2.1-5666.3/libgomp/config/linux/omp-lock.h
deleted file mode 100644
index 350cba160..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/omp-lock.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* This header is used during the build process to find the size and
- alignment of the public OpenMP locks, so that we can export data
- structures without polluting the namespace.
-
- When using the Linux futex primitive, non-recursive locks require
- only one int. Recursive locks require we identify the owning thread
- and so require two ints. */
-
-typedef int omp_lock_t;
-typedef struct { int owner, count; } omp_nest_lock_t;
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/powerpc/futex.h b/gcc-4.2.1-5666.3/libgomp/config/linux/powerpc/futex.h
deleted file mode 100644
index 20e035737..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/powerpc/futex.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* Provide target-specific access to the futex system call. */
-
-#include <sys/syscall.h>
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-static inline void
-sys_futex0 (int *addr, int op, int val)
-{
- register long int r0 __asm__ ("r0");
- register long int r3 __asm__ ("r3");
- register long int r4 __asm__ ("r4");
- register long int r5 __asm__ ("r5");
- register long int r6 __asm__ ("r6");
-
- r0 = SYS_futex;
- r3 = (long) addr;
- r4 = op;
- r5 = val;
- r6 = 0;
-
- /* ??? The powerpc64 sysdep.h file clobbers ctr; the powerpc32 sysdep.h
- doesn't. It doesn't much matter for us. In the interest of unity,
- go ahead and clobber it always. */
-
- __asm volatile ("sc"
- : "=r"(r0), "=r"(r3), "=r"(r4), "=r"(r5), "=r"(r6)
- : "r"(r0), "r"(r3), "r"(r4), "r"(r5), "r"(r6)
- : "r7", "r8", "r9", "r10", "r11", "r12",
- "cr0", "ctr", "memory");
-}
-
-static inline void
-futex_wait (int *addr, int val)
-{
- sys_futex0 (addr, FUTEX_WAIT, val);
-}
-
-static inline void
-futex_wake (int *addr, int count)
-{
- sys_futex0 (addr, FUTEX_WAKE, count);
-}
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/s390/futex.h b/gcc-4.2.1-5666.3/libgomp/config/linux/s390/futex.h
deleted file mode 100644
index 9b3820c0d..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/s390/futex.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Jakub Jelinek <jakub@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* Provide target-specific access to the futex system call. */
-
-#include <sys/syscall.h>
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-static inline void
-sys_futex0 (int *addr, int op, int val)
-{
- register long int gpr2 __asm__ ("2");
- register long int gpr3 __asm__ ("3");
- register long int gpr4 __asm__ ("4");
- register long int gpr5 __asm__ ("5");
-
- gpr2 = (long) addr;
- gpr3 = op;
- gpr4 = val;
- gpr5 = 0;
-
- __asm volatile ("svc %b1"
- : "=d" (gpr2)
- : "i" (SYS_futex),
- "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5)
- : "memory");
-}
-
-static inline void
-futex_wait (int *addr, int val)
-{
- sys_futex0 (addr, FUTEX_WAIT, val);
-}
-
-static inline void
-futex_wake (int *addr, int count)
-{
- sys_futex0 (addr, FUTEX_WAKE, count);
-}
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/sem.c b/gcc-4.2.1-5666.3/libgomp/config/linux/sem.c
deleted file mode 100644
index 798e3f1f2..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/sem.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* This is a Linux specific implementation of a semaphore synchronization
- mechanism for libgomp. This type is private to the library. This
- implementation uses atomic instructions and the futex syscall. */
-
-#include "libgomp.h"
-#include "futex.h"
-
-
-void
-gomp_sem_wait_slow (gomp_sem_t *sem)
-{
- while (1)
- {
- int val = __sync_val_compare_and_swap (sem, 0, -1);
- if (val > 0)
- {
- if (__sync_bool_compare_and_swap (sem, val, val - 1))
- return;
- }
- futex_wait (sem, -1);
- }
-}
-
-void
-gomp_sem_post_slow (gomp_sem_t *sem)
-{
- int old, tmp = *sem, wake;
-
- do
- {
- old = tmp;
- wake = old > 0 ? old + 1 : 1;
- tmp = __sync_val_compare_and_swap (sem, old, wake);
- }
- while (old != tmp);
-
- futex_wake (sem, wake);
-}
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/sem.h b/gcc-4.2.1-5666.3/libgomp/config/linux/sem.h
deleted file mode 100644
index fff0bbded..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/sem.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* This is a Linux specific implementation of a semaphore synchronization
- mechanism for libgomp. This type is private to the library. This
- implementation uses atomic instructions and the futex syscall. */
-
-#ifndef GOMP_SEM_H
-#define GOMP_SEM_H 1
-
-typedef int gomp_sem_t;
-
-static inline void gomp_sem_init (gomp_sem_t *sem, int value)
-{
- *sem = value;
-}
-
-extern void gomp_sem_wait_slow (gomp_sem_t *);
-static inline void gomp_sem_wait (gomp_sem_t *sem)
-{
- if (!__sync_bool_compare_and_swap (sem, 1, 0))
- gomp_sem_wait_slow (sem);
-}
-
-extern void gomp_sem_post_slow (gomp_sem_t *);
-static inline void gomp_sem_post (gomp_sem_t *sem)
-{
- if (!__sync_bool_compare_and_swap (sem, 0, 1))
- gomp_sem_post_slow (sem);
-}
-
-static inline void gomp_sem_destroy (gomp_sem_t *sem)
-{
-}
-
-#endif /* GOMP_SEM_H */
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/sparc/futex.h b/gcc-4.2.1-5666.3/libgomp/config/linux/sparc/futex.h
deleted file mode 100644
index 7b1cc8379..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/sparc/futex.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Jakub Jelinek <jakub@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* Provide target-specific access to the futex system call. */
-
-#include <sys/syscall.h>
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-static inline void
-sys_futex0 (int *addr, int op, int val)
-{
- register long int g1 __asm__ ("g1");
- register long int o0 __asm__ ("o0");
- register long int o1 __asm__ ("o1");
- register long int o2 __asm__ ("o2");
- register long int o3 __asm__ ("o3");
-
- g1 = SYS_futex;
- o0 = (long) addr;
- o1 = op;
- o2 = val;
- o3 = 0;
-
-#ifdef __arch64__
-# define SYSCALL_STRING "ta\t0x6d"
-#else
-# define SYSCALL_STRING "ta\t0x10"
-#endif
-
- __asm volatile (SYSCALL_STRING
- : "=r" (g1), "=r" (o0)
- : "0" (g1), "1" (o0), "r" (o1), "r" (o2), "r" (o3)
- : "g2", "g3", "g4", "g5", "g6",
- "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
- "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
- "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
- "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31",
-#ifdef __arch64__
- "f32", "f34", "f36", "f38", "f40", "f42", "f44", "f46",
- "f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62",
-#endif
- "cc", "memory");
-}
-
-static inline void
-futex_wait (int *addr, int val)
-{
- sys_futex0 (addr, FUTEX_WAIT, val);
-}
-
-static inline void
-futex_wake (int *addr, int count)
-{
- sys_futex0 (addr, FUTEX_WAKE, count);
-}
diff --git a/gcc-4.2.1-5666.3/libgomp/config/linux/x86/futex.h b/gcc-4.2.1-5666.3/libgomp/config/linux/x86/futex.h
deleted file mode 100644
index 4f9aac2dd..000000000
--- a/gcc-4.2.1-5666.3/libgomp/config/linux/x86/futex.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-
- Libgomp is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with libgomp; see the file COPYING.LIB. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, if you link this library with other files, some
- of which are compiled with GCC, to produce an executable, this library
- does not by itself cause the resulting executable to be covered by the
- GNU General Public License. This exception does not however invalidate
- any other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* Provide target-specific access to the futex system call. */
-
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-#ifdef __LP64__
-# ifndef SYS_futex
-# define SYS_futex 202
-# endif
-
-static inline void
-futex_wait (int *addr, int val)
-{
- register long r10 __asm__("%r10") = 0;
- long res;
-
- __asm volatile ("syscall"
- : "=a" (res)
- : "0"(SYS_futex), "D" (addr), "S"(FUTEX_WAIT),
- "d"(val), "r"(r10)
- : "r11", "rcx", "memory");
-}
-
-static inline void
-futex_wake (int *addr, int count)
-{
- long res;
-
- __asm volatile ("syscall"
- : "=a" (res)
- : "0"(SYS_futex), "D" (addr), "S"(FUTEX_WAKE), "d"(count)
- : "r11", "rcx", "memory");
-}
-#else
-# ifndef SYS_futex
-# define SYS_futex 240
-# endif
-
-# ifdef __PIC__
-
-static inline void
-sys_futex0 (int *addr, int op, int val)
-{
- long res;
-
- __asm volatile ("xchgl\t%%ebx, %2\n\t"
- "int\t$0x80\n\t"
- "xchgl\t%%ebx, %2"
- : "=a" (res)
- : "0"(SYS_futex), "r" (addr), "c"(op),
- "d"(val), "S"(0)
- : "memory");
-}
-
-# else
-
-static inline void
-sys_futex0 (int *addr, int op, int val)
-{
- long res;
-
- __asm volatile ("int $0x80"
- : "=a" (res)
- : "0"(SYS_futex), "b" (addr), "c"(op),
- "d"(val), "S"(0)
- : "memory");
-}
-
-# endif /* __PIC__ */
-
-static inline void
-futex_wait (int *addr, int val)
-{
- sys_futex0 (addr, FUTEX_WAIT, val);
-}
-
-static inline void
-futex_wake (int *addr, int count)
-{
- sys_futex0 (addr, FUTEX_WAKE, count);
-}
-
-#endif /* __LP64__ */