mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-01 17:30:07 +00:00
alpha: Remove HAVE_TLS_SUPPORT and HAVE___THREAD tests.
This commit is contained in:
parent
92e47068b3
commit
f81b9186ff
@ -1,3 +1,11 @@
|
|||||||
|
2012-02-08 Richard Henderson <rth@twiddle.net>
|
||||||
|
|
||||||
|
* sysdeps/alpha/nptl/tls.h: Don't test HAVE_TLS_SUPPORT.
|
||||||
|
* sysdeps/unix/alpha/sysdep.h: Don't test HAVE___THREAD.
|
||||||
|
* sysdeps/alpha/elf/configure.in (libc_cv_alpha_tls): Error out if
|
||||||
|
the test fails. Don't set HAVE_TLS_SUPPORT.
|
||||||
|
* sysdeps/alpha/elf/configure: Rebuild.
|
||||||
|
|
||||||
2012-01-07 Joseph Myers <joseph@codesourcery.com>
|
2012-01-07 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* sysdeps/alpha/backtrace.c: Use x86_64 version of backtrace.c.
|
* sysdeps/alpha/backtrace.c: Use x86_64 version of backtrace.c.
|
||||||
|
122
sysdeps/alpha/elf/configure
vendored
122
sysdeps/alpha/elf/configure
vendored
@ -1,12 +1,92 @@
|
|||||||
|
|
||||||
|
# as_fn_set_status STATUS
|
||||||
|
# -----------------------
|
||||||
|
# Set $? to STATUS, without forking.
|
||||||
|
as_fn_set_status ()
|
||||||
|
{
|
||||||
|
return $1
|
||||||
|
} # as_fn_set_status
|
||||||
|
|
||||||
|
# as_fn_exit STATUS
|
||||||
|
# -----------------
|
||||||
|
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
|
||||||
|
as_fn_exit ()
|
||||||
|
{
|
||||||
|
set +e
|
||||||
|
as_fn_set_status $1
|
||||||
|
exit $1
|
||||||
|
} # as_fn_exit
|
||||||
|
if expr a : '\(a\)' >/dev/null 2>&1 &&
|
||||||
|
test "X`expr 00001 : '.*\(...\)'`" = X001; then
|
||||||
|
as_expr=expr
|
||||||
|
else
|
||||||
|
as_expr=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
|
||||||
|
as_basename=basename
|
||||||
|
else
|
||||||
|
as_basename=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
as_me=`$as_basename -- "$0" ||
|
||||||
|
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
|
||||||
|
X"$0" : 'X\(//\)$' \| \
|
||||||
|
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
|
||||||
|
$as_echo X/"$0" |
|
||||||
|
sed '/^.*\/\([^/][^/]*\)\/*$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\/\(\/\/\)$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\/\(\/\).*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
s/.*/./; q'`
|
||||||
|
|
||||||
|
|
||||||
|
as_lineno_1=$LINENO as_lineno_1a=$LINENO
|
||||||
|
as_lineno_2=$LINENO as_lineno_2a=$LINENO
|
||||||
|
eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
|
||||||
|
test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
|
||||||
|
# Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
|
||||||
|
sed -n '
|
||||||
|
p
|
||||||
|
/[$]LINENO/=
|
||||||
|
' <$as_myself |
|
||||||
|
sed '
|
||||||
|
s/[$]LINENO.*/&-/
|
||||||
|
t lineno
|
||||||
|
b
|
||||||
|
:lineno
|
||||||
|
N
|
||||||
|
:loop
|
||||||
|
s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
|
||||||
|
t loop
|
||||||
|
s/-\n.*//
|
||||||
|
' >$as_me.lineno &&
|
||||||
|
chmod +x "$as_me.lineno" ||
|
||||||
|
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
|
||||||
|
|
||||||
|
# Don't try to exec as it changes $[0], causing all sort of problems
|
||||||
|
# (the dirname of $[0] is not the place where we might find the
|
||||||
|
# original and so on. Autoconf is especially sensitive to this).
|
||||||
|
. "./$as_me.lineno"
|
||||||
|
# Exit status is that of the last command.
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
|
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
|
||||||
# Local configure fragment for sysdeps/alpha/elf.
|
# Local configure fragment for sysdeps/alpha/elf.
|
||||||
|
|
||||||
if test "$usetls" != no; then
|
# Check for support of thread-local storage handling in assembler and linker.
|
||||||
# Check for support of thread-local storage handling in assembler and
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Alpha TLS support" >&5
|
||||||
# linker.
|
|
||||||
{ $as_echo "$as_me:$LINENO: checking for Alpha TLS support" >&5
|
|
||||||
$as_echo_n "checking for Alpha TLS support... " >&6; }
|
$as_echo_n "checking for Alpha TLS support... " >&6; }
|
||||||
if test "${libc_cv_alpha_tls+set}" = set; then
|
if ${libc_cv_alpha_tls+:} false; then :
|
||||||
$as_echo_n "(cached) " >&6
|
$as_echo_n "(cached) " >&6
|
||||||
else
|
else
|
||||||
cat > conftest.s <<\EOF
|
cat > conftest.s <<\EOF
|
||||||
@ -44,30 +124,26 @@ baz:
|
|||||||
lda $16, n($31) !tprel
|
lda $16, n($31) !tprel
|
||||||
EOF
|
EOF
|
||||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
|
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
|
||||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
||||||
(eval $ac_try) 2>&5
|
(eval $ac_try) 2>&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||||
(exit $ac_status); }; }; then
|
test $ac_status = 0; }; }; then
|
||||||
libc_cv_alpha_tls=yes
|
libc_cv_alpha_tls=yes
|
||||||
else
|
else
|
||||||
libc_cv_alpha_tls=no
|
libc_cv_alpha_tls=no
|
||||||
fi
|
fi
|
||||||
rm -f conftest*
|
rm -f conftest*
|
||||||
fi
|
fi
|
||||||
{ $as_echo "$as_me:$LINENO: result: $libc_cv_alpha_tls" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_alpha_tls" >&5
|
||||||
$as_echo "$libc_cv_alpha_tls" >&6; }
|
$as_echo "$libc_cv_alpha_tls" >&6; }
|
||||||
if test $libc_cv_alpha_tls = yes; then
|
if test $libc_cv_alpha_tls = no; then
|
||||||
cat >>confdefs.h <<\_ACEOF
|
as_fn_error $? "the assembler must support TLS" "$LINENO" 5
|
||||||
#define HAVE_TLS_SUPPORT 1
|
|
||||||
_ACEOF
|
|
||||||
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
{ $as_echo "$as_me:$LINENO: checking for GP relative module local relocs" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GP relative module local relocs" >&5
|
||||||
$as_echo_n "checking for GP relative module local relocs... " >&6; }
|
$as_echo_n "checking for GP relative module local relocs... " >&6; }
|
||||||
if test "${libc_cv_alpha_hidden_gprel+set}" = set; then
|
if ${libc_cv_alpha_hidden_gprel+:} false; then :
|
||||||
$as_echo_n "(cached) " >&6
|
$as_echo_n "(cached) " >&6
|
||||||
else
|
else
|
||||||
cat > conftest.c <<\EOF
|
cat > conftest.c <<\EOF
|
||||||
@ -78,11 +154,11 @@ EOF
|
|||||||
|
|
||||||
libc_cv_alpha_hidden_gprel=no
|
libc_cv_alpha_hidden_gprel=no
|
||||||
if { ac_try='${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&5'
|
if { ac_try='${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&5'
|
||||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
||||||
(eval $ac_try) 2>&5
|
(eval $ac_try) 2>&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||||
(exit $ac_status); }; }; then
|
test $ac_status = 0; }; }; then
|
||||||
if grep -q 'bar.*!gprel' conftest.s \
|
if grep -q 'bar.*!gprel' conftest.s \
|
||||||
&& grep -q 'baz.*!gprel' conftest.s \
|
&& grep -q 'baz.*!gprel' conftest.s \
|
||||||
&& ! grep -q 'bar.*!literal' conftest.s \
|
&& ! grep -q 'bar.*!literal' conftest.s \
|
||||||
@ -92,11 +168,9 @@ if { ac_try='${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&5'
|
|||||||
fi
|
fi
|
||||||
rm -f conftest*
|
rm -f conftest*
|
||||||
fi
|
fi
|
||||||
{ $as_echo "$as_me:$LINENO: result: $libc_cv_alpha_hidden_gprel" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_alpha_hidden_gprel" >&5
|
||||||
$as_echo "$libc_cv_alpha_hidden_gprel" >&6; }
|
$as_echo "$libc_cv_alpha_hidden_gprel" >&6; }
|
||||||
if test $libc_cv_alpha_hidden_gprel = yes; then
|
if test $libc_cv_alpha_hidden_gprel = yes; then
|
||||||
cat >>confdefs.h <<\_ACEOF
|
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||||
#define PI_STATIC_AND_HIDDEN 1
|
|
||||||
_ACEOF
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||||
# Local configure fragment for sysdeps/alpha/elf.
|
# Local configure fragment for sysdeps/alpha/elf.
|
||||||
|
|
||||||
if test "$usetls" != no; then
|
# Check for support of thread-local storage handling in assembler and linker.
|
||||||
# Check for support of thread-local storage handling in assembler and
|
|
||||||
# linker.
|
|
||||||
AC_CACHE_CHECK(for Alpha TLS support, libc_cv_alpha_tls, [dnl
|
AC_CACHE_CHECK(for Alpha TLS support, libc_cv_alpha_tls, [dnl
|
||||||
cat > conftest.s <<\EOF
|
cat > conftest.s <<\EOF
|
||||||
.section ".tdata", "awT", @progbits
|
.section ".tdata", "awT", @progbits
|
||||||
@ -46,9 +44,8 @@ else
|
|||||||
libc_cv_alpha_tls=no
|
libc_cv_alpha_tls=no
|
||||||
fi
|
fi
|
||||||
rm -f conftest*])
|
rm -f conftest*])
|
||||||
if test $libc_cv_alpha_tls = yes; then
|
if test $libc_cv_alpha_tls = no; then
|
||||||
AC_DEFINE(HAVE_TLS_SUPPORT)
|
AC_MSG_ERROR([the assembler must support TLS])
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CACHE_CHECK(for GP relative module local relocs, libc_cv_alpha_hidden_gprel, [dnl
|
AC_CACHE_CHECK(for GP relative module local relocs, libc_cv_alpha_hidden_gprel, [dnl
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Definition for thread-local data handling. NPTL/Alpha version.
|
/* Definition for thread-local data handling. NPTL/Alpha version.
|
||||||
Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
|
Copyright (C) 2003, 2005, 2006, 2007, 2012 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -38,18 +38,6 @@ typedef union dtv
|
|||||||
} pointer;
|
} pointer;
|
||||||
} dtv_t;
|
} dtv_t;
|
||||||
|
|
||||||
#else /* __ASSEMBLER__ */
|
|
||||||
# include <tcb-offsets.h>
|
|
||||||
#endif /* __ASSEMBLER__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* We require TLS support in the tools. */
|
|
||||||
#ifndef HAVE_TLS_SUPPORT
|
|
||||||
# error "TLS support is required."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __ASSEMBLER__
|
|
||||||
|
|
||||||
/* Get system call information. */
|
/* Get system call information. */
|
||||||
# include <sysdep.h>
|
# include <sysdep.h>
|
||||||
|
|
||||||
@ -144,6 +132,8 @@ typedef struct
|
|||||||
#define THREAD_GSCOPE_WAIT() \
|
#define THREAD_GSCOPE_WAIT() \
|
||||||
GL(dl_wait_lookup_done) ()
|
GL(dl_wait_lookup_done) ()
|
||||||
|
|
||||||
|
#else /* __ASSEMBLER__ */
|
||||||
|
# include <tcb-offsets.h>
|
||||||
#endif /* __ASSEMBLER__ */
|
#endif /* __ASSEMBLER__ */
|
||||||
|
|
||||||
#endif /* tls.h */
|
#endif /* tls.h */
|
||||||
|
@ -200,39 +200,19 @@ __LABEL(name) \
|
|||||||
"$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", \
|
"$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", \
|
||||||
"$22", "$23", "$24", "$25", "$27", "$28", "memory"
|
"$22", "$23", "$24", "$25", "$27", "$28", "memory"
|
||||||
|
|
||||||
/* If TLS is in use, we have a conflict between the PAL_rduniq primitive,
|
|
||||||
as modeled within GCC, and explicit use of the R0 register. If we use
|
|
||||||
the register via the asm, the scheduler may place the PAL_rduniq insn
|
|
||||||
before we've copied the data from R0 into _sc_ret. If this happens
|
|
||||||
we'll get a reload abort, since R0 is live at the same time it is
|
|
||||||
needed for the PAL_rduniq.
|
|
||||||
|
|
||||||
Solve this by using the "v" constraint instead of an asm for the syscall
|
|
||||||
output. We don't do this unconditionally to allow compilation with
|
|
||||||
older compilers. */
|
|
||||||
|
|
||||||
#ifdef HAVE___THREAD
|
|
||||||
#define inline_syscall_r0_asm
|
|
||||||
#define inline_syscall_r0_out_constraint "=v"
|
|
||||||
#else
|
|
||||||
#define inline_syscall_r0_asm __asm__("$0")
|
|
||||||
#define inline_syscall_r0_out_constraint "=r"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* It is moderately important optimization-wise to limit the lifetime
|
/* It is moderately important optimization-wise to limit the lifetime
|
||||||
of the hard-register variables as much as possible. Thus we copy
|
of the hard-register variables as much as possible. Thus we copy
|
||||||
in/out as close to the asm as possible. */
|
in/out as close to the asm as possible. */
|
||||||
|
|
||||||
#define inline_syscall0(name, args...) \
|
#define inline_syscall0(name, args...) \
|
||||||
{ \
|
{ \
|
||||||
register long _sc_0 inline_syscall_r0_asm; \
|
register long _sc_0; \
|
||||||
register long _sc_19 __asm__("$19"); \
|
register long _sc_19 __asm__("$19"); \
|
||||||
\
|
\
|
||||||
_sc_0 = name; \
|
_sc_0 = name; \
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__ \
|
||||||
("callsys # %0 %1 <= %2" \
|
("callsys # %0 %1 <= %2" \
|
||||||
: inline_syscall_r0_out_constraint (_sc_0), \
|
: "=v"(_sc_0), "=r"(_sc_19) \
|
||||||
"=r"(_sc_19) \
|
|
||||||
: "0"(_sc_0) \
|
: "0"(_sc_0) \
|
||||||
: inline_syscall_clobbers, \
|
: inline_syscall_clobbers, \
|
||||||
"$16", "$17", "$18", "$20", "$21"); \
|
"$16", "$17", "$18", "$20", "$21"); \
|
||||||
@ -241,7 +221,7 @@ __LABEL(name) \
|
|||||||
|
|
||||||
#define inline_syscall1(name,arg1) \
|
#define inline_syscall1(name,arg1) \
|
||||||
{ \
|
{ \
|
||||||
register long _sc_0 inline_syscall_r0_asm; \
|
register long _sc_0; \
|
||||||
register long _sc_16 __asm__("$16"); \
|
register long _sc_16 __asm__("$16"); \
|
||||||
register long _sc_19 __asm__("$19"); \
|
register long _sc_19 __asm__("$19"); \
|
||||||
register long _tmp_16 = (long) (arg1); \
|
register long _tmp_16 = (long) (arg1); \
|
||||||
@ -250,8 +230,7 @@ __LABEL(name) \
|
|||||||
_sc_16 = _tmp_16; \
|
_sc_16 = _tmp_16; \
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__ \
|
||||||
("callsys # %0 %1 <= %2 %3" \
|
("callsys # %0 %1 <= %2 %3" \
|
||||||
: inline_syscall_r0_out_constraint (_sc_0), \
|
: "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16) \
|
||||||
"=r"(_sc_19), "=r"(_sc_16) \
|
|
||||||
: "0"(_sc_0), "2"(_sc_16) \
|
: "0"(_sc_0), "2"(_sc_16) \
|
||||||
: inline_syscall_clobbers, \
|
: inline_syscall_clobbers, \
|
||||||
"$17", "$18", "$20", "$21"); \
|
"$17", "$18", "$20", "$21"); \
|
||||||
@ -260,7 +239,7 @@ __LABEL(name) \
|
|||||||
|
|
||||||
#define inline_syscall2(name,arg1,arg2) \
|
#define inline_syscall2(name,arg1,arg2) \
|
||||||
{ \
|
{ \
|
||||||
register long _sc_0 inline_syscall_r0_asm; \
|
register long _sc_0; \
|
||||||
register long _sc_16 __asm__("$16"); \
|
register long _sc_16 __asm__("$16"); \
|
||||||
register long _sc_17 __asm__("$17"); \
|
register long _sc_17 __asm__("$17"); \
|
||||||
register long _sc_19 __asm__("$19"); \
|
register long _sc_19 __asm__("$19"); \
|
||||||
@ -272,8 +251,8 @@ __LABEL(name) \
|
|||||||
_sc_17 = _tmp_17; \
|
_sc_17 = _tmp_17; \
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__ \
|
||||||
("callsys # %0 %1 <= %2 %3 %4" \
|
("callsys # %0 %1 <= %2 %3 %4" \
|
||||||
: inline_syscall_r0_out_constraint (_sc_0), \
|
: "=v"(_sc_0), "=r"(_sc_19), \
|
||||||
"=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17) \
|
"=r"(_sc_16), "=r"(_sc_17) \
|
||||||
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17) \
|
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17) \
|
||||||
: inline_syscall_clobbers, \
|
: inline_syscall_clobbers, \
|
||||||
"$18", "$20", "$21"); \
|
"$18", "$20", "$21"); \
|
||||||
@ -282,7 +261,7 @@ __LABEL(name) \
|
|||||||
|
|
||||||
#define inline_syscall3(name,arg1,arg2,arg3) \
|
#define inline_syscall3(name,arg1,arg2,arg3) \
|
||||||
{ \
|
{ \
|
||||||
register long _sc_0 inline_syscall_r0_asm; \
|
register long _sc_0; \
|
||||||
register long _sc_16 __asm__("$16"); \
|
register long _sc_16 __asm__("$16"); \
|
||||||
register long _sc_17 __asm__("$17"); \
|
register long _sc_17 __asm__("$17"); \
|
||||||
register long _sc_18 __asm__("$18"); \
|
register long _sc_18 __asm__("$18"); \
|
||||||
@ -297,9 +276,8 @@ __LABEL(name) \
|
|||||||
_sc_18 = _tmp_18; \
|
_sc_18 = _tmp_18; \
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__ \
|
||||||
("callsys # %0 %1 <= %2 %3 %4 %5" \
|
("callsys # %0 %1 <= %2 %3 %4 %5" \
|
||||||
: inline_syscall_r0_out_constraint (_sc_0), \
|
: "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16), \
|
||||||
"=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
|
"=r"(_sc_17), "=r"(_sc_18) \
|
||||||
"=r"(_sc_18) \
|
|
||||||
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
|
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
|
||||||
"4"(_sc_18) \
|
"4"(_sc_18) \
|
||||||
: inline_syscall_clobbers, "$20", "$21"); \
|
: inline_syscall_clobbers, "$20", "$21"); \
|
||||||
@ -308,7 +286,7 @@ __LABEL(name) \
|
|||||||
|
|
||||||
#define inline_syscall4(name,arg1,arg2,arg3,arg4) \
|
#define inline_syscall4(name,arg1,arg2,arg3,arg4) \
|
||||||
{ \
|
{ \
|
||||||
register long _sc_0 inline_syscall_r0_asm; \
|
register long _sc_0; \
|
||||||
register long _sc_16 __asm__("$16"); \
|
register long _sc_16 __asm__("$16"); \
|
||||||
register long _sc_17 __asm__("$17"); \
|
register long _sc_17 __asm__("$17"); \
|
||||||
register long _sc_18 __asm__("$18"); \
|
register long _sc_18 __asm__("$18"); \
|
||||||
@ -325,9 +303,8 @@ __LABEL(name) \
|
|||||||
_sc_19 = _tmp_19; \
|
_sc_19 = _tmp_19; \
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__ \
|
||||||
("callsys # %0 %1 <= %2 %3 %4 %5 %6" \
|
("callsys # %0 %1 <= %2 %3 %4 %5 %6" \
|
||||||
: inline_syscall_r0_out_constraint (_sc_0), \
|
: "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16), \
|
||||||
"=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
|
"=r"(_sc_17), "=r"(_sc_18) \
|
||||||
"=r"(_sc_18) \
|
|
||||||
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
|
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
|
||||||
"4"(_sc_18), "1"(_sc_19) \
|
"4"(_sc_18), "1"(_sc_19) \
|
||||||
: inline_syscall_clobbers, "$20", "$21"); \
|
: inline_syscall_clobbers, "$20", "$21"); \
|
||||||
@ -336,7 +313,7 @@ __LABEL(name) \
|
|||||||
|
|
||||||
#define inline_syscall5(name,arg1,arg2,arg3,arg4,arg5) \
|
#define inline_syscall5(name,arg1,arg2,arg3,arg4,arg5) \
|
||||||
{ \
|
{ \
|
||||||
register long _sc_0 inline_syscall_r0_asm; \
|
register long _sc_0; \
|
||||||
register long _sc_16 __asm__("$16"); \
|
register long _sc_16 __asm__("$16"); \
|
||||||
register long _sc_17 __asm__("$17"); \
|
register long _sc_17 __asm__("$17"); \
|
||||||
register long _sc_18 __asm__("$18"); \
|
register long _sc_18 __asm__("$18"); \
|
||||||
@ -356,9 +333,8 @@ __LABEL(name) \
|
|||||||
_sc_20 = _tmp_20; \
|
_sc_20 = _tmp_20; \
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__ \
|
||||||
("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7" \
|
("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7" \
|
||||||
: inline_syscall_r0_out_constraint (_sc_0), \
|
: "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16), \
|
||||||
"=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
|
"=r"(_sc_17), "=r"(_sc_18), "=r"(_sc_20) \
|
||||||
"=r"(_sc_18), "=r"(_sc_20) \
|
|
||||||
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
|
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
|
||||||
"4"(_sc_18), "1"(_sc_19), "5"(_sc_20) \
|
"4"(_sc_18), "1"(_sc_19), "5"(_sc_20) \
|
||||||
: inline_syscall_clobbers, "$21"); \
|
: inline_syscall_clobbers, "$21"); \
|
||||||
@ -367,7 +343,7 @@ __LABEL(name) \
|
|||||||
|
|
||||||
#define inline_syscall6(name,arg1,arg2,arg3,arg4,arg5,arg6) \
|
#define inline_syscall6(name,arg1,arg2,arg3,arg4,arg5,arg6) \
|
||||||
{ \
|
{ \
|
||||||
register long _sc_0 inline_syscall_r0_asm; \
|
register long _sc_0; \
|
||||||
register long _sc_16 __asm__("$16"); \
|
register long _sc_16 __asm__("$16"); \
|
||||||
register long _sc_17 __asm__("$17"); \
|
register long _sc_17 __asm__("$17"); \
|
||||||
register long _sc_18 __asm__("$18"); \
|
register long _sc_18 __asm__("$18"); \
|
||||||
@ -390,9 +366,9 @@ __LABEL(name) \
|
|||||||
_sc_21 = _tmp_21; \
|
_sc_21 = _tmp_21; \
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__ \
|
||||||
("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7 %8" \
|
("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7 %8" \
|
||||||
: inline_syscall_r0_out_constraint (_sc_0), \
|
: "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16), \
|
||||||
"=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
|
"=r"(_sc_17), "=r"(_sc_18), "=r"(_sc_20), \
|
||||||
"=r"(_sc_18), "=r"(_sc_20), "=r"(_sc_21) \
|
"=r"(_sc_21) \
|
||||||
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), "4"(_sc_18), \
|
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), "4"(_sc_18), \
|
||||||
"1"(_sc_19), "5"(_sc_20), "6"(_sc_21) \
|
"1"(_sc_19), "5"(_sc_20), "6"(_sc_21) \
|
||||||
: inline_syscall_clobbers); \
|
: inline_syscall_clobbers); \
|
||||||
|
Loading…
Reference in New Issue
Block a user