Use __ASSEMBLER__ test macro not ASSEMBLER.
[kopensolaris-gnu/glibc.git] / linuxthreads / sysdeps / i386 / pt-machine.h
index 97d75d4..919eda2 100644 (file)
@@ -1,6 +1,6 @@
 /* Machine-dependent pthreads configuration and inline functions.
    i386 version.
 /* Machine-dependent pthreads configuration and inline functions.
    i386 version.
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>.
 
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>.
 
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
+#ifndef _PT_MACHINE_H
+#define _PT_MACHINE_H  1
+
+#ifndef __ASSEMBLER__
 #ifndef PT_EI
 # define PT_EI extern inline
 #endif
 
 #ifndef PT_EI
 # define PT_EI extern inline
 #endif
 
+extern long int testandset (int *spinlock);
+extern int __compare_and_swap (long int *p, long int oldval, long int newval);
+
+/* Get some notion of the current stack.  Need not be exactly the top
+   of the stack, just something somewhere in the current frame.  */
+#define CURRENT_STACK_FRAME  __builtin_frame_address (0)
+
+
 /* Spinlock implementation; required.  */
 /* Spinlock implementation; required.  */
-PT_EI int
+PT_EI long int
 testandset (int *spinlock)
 {
 testandset (int *spinlock)
 {
-  int ret;
+  long int ret;
 
   __asm__ __volatile__(
        "xchgl %0, %1"
 
   __asm__ __volatile__(
        "xchgl %0, %1"
@@ -39,12 +51,6 @@ testandset (int *spinlock)
 }
 
 
 }
 
 
-/* Get some notion of the current stack.  Need not be exactly the top
-   of the stack, just something somewhere in the current frame.  */
-#define CURRENT_STACK_FRAME  stack_pointer
-register char * stack_pointer __asm__ ("%esp");
-
-
 /* Compare-and-swap for semaphores.
    Available on the 486 and above, but not on the 386.
    We test dynamically whether it's available or not. */
 /* Compare-and-swap for semaphores.
    Available on the 486 and above, but not on the 386.
    We test dynamically whether it's available or not. */
@@ -97,3 +103,6 @@ compare_and_swap_is_available (void)
      Otherwise, it's a 486 or above and it has cmpxchg.  */
   return changed != 0;
 }
      Otherwise, it's a 486 or above and it has cmpxchg.  */
   return changed != 0;
 }
+#endif /* __ASSEMBLER__ */
+
+#endif /* pt-machine.h */