View | Details | Raw Unified | Return to bug 8402
Collapse All | Expand All

(-)linuxthreads/linuxthreads/ChangeLog:1.868 (+9 lines)
Lines 1-3 Link Here
1
2006-04-26  Petr Salinger  <Petr.Salinger@seznam.cz>
2
	    Daniel Jacobowitz  <dan@codesourcery.com>
3
4
	* sysdeps/i386/pt-machine.h: Include <kernel-features.h>
5
	and <useldt.h>.  Define BUSY_WAIT_NOP.
6
	* sysdeps/i386/i486/pt-machine.h: New file.
7
	* sysdeps/i386/i586/pt-machine.h: New file.
8
	* sysdeps/i386/i686/pt-machine.h: Use the i386 version.
9
1
2006-04-26  Daniel Jacobowitz  <dan@codesourcery.com>
10
2006-04-26  Daniel Jacobowitz  <dan@codesourcery.com>
2
11
3
	Import pointer and stack guard changes from NPTL.
12
	Import pointer and stack guard changes from NPTL.
(-)linuxthreads/linuxthreads/sysdeps/i386/pt-machine.h:1.18 (+9 lines)
Lines 22-27 Link Here
22
#ifndef _PT_MACHINE_H
22
#ifndef _PT_MACHINE_H
23
#define _PT_MACHINE_H	1
23
#define _PT_MACHINE_H	1
24
24
25
#include <kernel-features.h>
26
25
#ifndef __ASSEMBLER__
27
#ifndef __ASSEMBLER__
26
#ifndef PT_EI
28
#ifndef PT_EI
27
# define PT_EI extern inline __attribute__ ((always_inline))
29
# define PT_EI extern inline __attribute__ ((always_inline))
Lines 105-108 Link Here
105
}
107
}
106
#endif /* __ASSEMBLER__ */
108
#endif /* __ASSEMBLER__ */
107
109
110
#if __ASSUME_LDT_WORKS > 0
111
#include <useldt.h>
112
#endif
113
114
/* The P4 and above really want some help to prevent overheating.  */
115
#define BUSY_WAIT_NOP	__asm__ ("rep; nop")
116
108
#endif /* pt-machine.h */
117
#endif /* pt-machine.h */
(-)/dev/null (+25 lines)
Added Link Here
1
/* Machine-dependent pthreads configuration and inline functions.
2
   i486 version.
3
   Copyright (C) 1996-2001, 2002, 2003, 2006 Free Software Foundation, Inc.
4
   This file is part of the GNU C Library.
5
   Contributed by Richard Henderson <rth@tamu.edu>.
6
7
   The GNU C Library is free software; you can redistribute it and/or
8
   modify it under the terms of the GNU Lesser General Public License as
9
   published by the Free Software Foundation; either version 2.1 of the
10
   License, or (at your option) any later version.
11
12
   The GNU C Library is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
   Lesser General Public License for more details.
16
17
   You should have received a copy of the GNU Lesser General Public
18
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
19
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20
   Boston, MA 02111-1307, USA.  */
21
22
#include_next <pt-machine.h>
23
24
/* Compare-and-swap is always available.  */
25
#undef TEST_FOR_COMPARE_AND_SWAP
(-)/dev/null (+25 lines)
Added Link Here
1
/* Machine-dependent pthreads configuration and inline functions.
2
   i586 version.
3
   Copyright (C) 1996-2001, 2002, 2003, 2006 Free Software Foundation, Inc.
4
   This file is part of the GNU C Library.
5
   Contributed by Richard Henderson <rth@tamu.edu>.
6
7
   The GNU C Library is free software; you can redistribute it and/or
8
   modify it under the terms of the GNU Lesser General Public License as
9
   published by the Free Software Foundation; either version 2.1 of the
10
   License, or (at your option) any later version.
11
12
   The GNU C Library is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
   Lesser General Public License for more details.
16
17
   You should have received a copy of the GNU Lesser General Public
18
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
19
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20
   Boston, MA 02111-1307, USA.  */
21
22
#include_next <pt-machine.h>
23
24
/* Compare-and-swap is always available.  */
25
#undef TEST_FOR_COMPARE_AND_SWAP
(-)linuxthreads/linuxthreads/sysdeps/i386/i686/pt-machine.h:1.24 (-58 / +4 lines)
Lines 1-6 Link Here
1
/* Machine-dependent pthreads configuration and inline functions.
1
/* Machine-dependent pthreads configuration and inline functions.
2
   i686 version.
2
   i686 version.
3
   Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
3
   Copyright (C) 1996-2001, 2002, 2003, 2006 Free Software Foundation, Inc.
4
   This file is part of the GNU C Library.
4
   This file is part of the GNU C Library.
5
   Contributed by Richard Henderson <rth@tamu.edu>.
5
   Contributed by Richard Henderson <rth@tamu.edu>.
6
6
Lines 19-79 Link Here
19
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20
   Boston, MA 02111-1307, USA.  */
20
   Boston, MA 02111-1307, USA.  */
21
21
22
#ifndef _PT_MACHINE_H
22
#include_next <pt-machine.h>
23
#define _PT_MACHINE_H	1
24
23
25
#ifndef PT_EI
24
/* Compare-and-swap is always available.  */
26
# define PT_EI extern inline __attribute__ ((always_inline))
25
#undef TEST_FOR_COMPARE_AND_SWAP
27
#endif
28
#include "kernel-features.h"
29
30
#ifndef __ASSEMBLER__
31
extern long int testandset (int *spinlock);
32
extern int __compare_and_swap (long int *p, long int oldval, long int newval);
33
34
/* Get some notion of the current stack.  Need not be exactly the top
35
   of the stack, just something somewhere in the current frame.  */
36
#define CURRENT_STACK_FRAME  __builtin_frame_address (0)
37
38
39
/* Spinlock implementation; required.  */
40
PT_EI long int
41
testandset (int *spinlock)
42
{
43
  long int ret;
44
45
  __asm__ __volatile__ (
46
	"xchgl %0, %1"
47
	: "=r" (ret), "=m" (*spinlock)
48
	: "0" (1), "m" (*spinlock)
49
	: "memory");
50
51
  return ret;
52
}
53
54
55
/* Compare-and-swap for semaphores.  It's always available on i686.  */
56
#define HAS_COMPARE_AND_SWAP
57
58
PT_EI int
59
__compare_and_swap (long int *p, long int oldval, long int newval)
60
{
61
  char ret;
62
  long int readval;
63
64
  __asm__ __volatile__ ("lock; cmpxchgl %3, %1; sete %0"
65
			: "=q" (ret), "=m" (*p), "=a" (readval)
66
			: "r" (newval), "m" (*p), "a" (oldval)
67
			: "memory");
68
  return ret;
69
}
70
#endif
71
72
#if __ASSUME_LDT_WORKS > 0
73
#include "../useldt.h"
74
#endif
75
76
/* The P4 and above really want some help to prevent overheating.  */
77
#define BUSY_WAIT_NOP	__asm__ ("rep; nop")
78
79
#endif /* pt-machine.h */

Return to bug 8402