1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00
1997-08-14 03:14  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-minimal.c: Don't use relative #include paths.
	(malloc): Don't try to initialize _dl_pagesize, it already is.
	(__sigjmp_save, longjmp): Reformat.

	* sysdeps/generic/dl-sysdep.c: Implement _dl_show_auxv function to
	show content of auxiliary array.
	(_dl_sysdep_start): Remember start of auxiliary vector.
	* sysdeps/mach/hurd/dl-sysdep.c: (_dl_show_auxv): New dummy function.
	* elf/link.h: Add prototype for _dl_show_auxv.
	* elf/rtld.c (dl_main): Call _dl_show_auxv if LD_SHOW_AUXV envvar
	is present.

	* libio/iofdopen.c: Better prepare for use in libstdc++.
	* libio/iofflush.c: Likewise.
	* libio/iofgetpos.c: Likewise.
	* libio/iofgets.c: Likewise.
	* libio/iofopen.c: Likewise.
	* libio/iofputs.c: Likewise.
	* libio/iofread.c: Likewise.
	* libio/iofsetpos.c: Likewise.
	* libio/ioftell.c: Likewise.
	* libio/iofwrite.c: Likewise.
	* libio/iogetdelim.c: Likewise.
	* libio/iogets.c: Likewise.
	* libio/iopopen.c: Likewise.
	* libio/ioputs.c: Likewise.
	* libio/iosetbuffer.c: Likewise.
	* libio/iosetvbuf.c: Likewise.
	* libio/ioungetc.c: Likewise.
	* libio/iovsprintf.c: Likewise.
	* libio/iovsscanf.c: Likewise.

	* manual/creature.texi: Mention _XOPEN_SOURCE_EXTENDED in correct
	place.

	* manual/math.texi: Add comment to sincos decsription to say it's a
	GNU extension.
	Fix description of random function.

	* posix/fnmatch.h: Recognize Windog by _WINDOWS32 not WIN32.
	* posix/glob.c: Likewise.  Handle stupid system headers on SunOS.
	Add casts for all __alloca calls.
	* posix/glob.h: Recognize Windog by _WINDOWS32 not WIN32.
	Declare additional GLOB_* constants also if _GNU_SOURCE is defined.
	Patches by Paul D. Smith <psmith@BayNetworks.COM>.

	* stdio-common/_itoa.c: Don't use relateive #include paths.

	* sysdeps/i386/fpu/bits/mathinline.h: Enable optimizations even for
	gcc 2.7.
	(atan): Loading 1.0 from memory does not pay off.
	(asinh): Fix typo.

1997-08-13 09:44  Philip Blundell  <Philip.Blundell@pobox.com>

	* sysdeps/stub/accept.c: Use socklen_t where necessary.
	* sysdeps/stub/bind.c: Likewise.
	* sysdeps/stub/connect.c: Likewise.
	* sysdeps/stub/getsockname.c: Likewise.
	* sysdeps/stub/getsockopt.c: Likewise.
	* sysdeps/stub/recvfrom.c: Likewise.
	* sysdeps/stub/sendto.c: Likewise.
	* sysdeps/stub/setsockopt.c: Likewise.

1997-08-11  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* io/ftw.c (object_compare): Avoid memcmp when comparing scalar
	types.

1997-08-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* math/libm-test.c (cbrt_test): Add epsilon for long double to
	`cbrt (-0.001)'.

1997-08-11  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/stub/bits/string.h: Fix comment.

1997-08-01  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/Makefile (routines): Remove dl-version.
	(dl-routines): Add it here instead.  This removes dead code from
	libc.so.

1997-08-12 17:17  Wolfram Gloger  <wmglo@dent.med.uni-muenchen.de>

	* malloc/thread-m.h (thread_atfork, thread_atfork_static): New
	macros to encapsulate pthread_atfork's functionality.
	* malloc/malloc.c (ptmalloc_lock_all, ptmalloc_unlock_all): New
	functions, registered via thread_atfork in the initialization
	routine or via thread_atfork_static in global scope.  This
	ensures a consistent state of all locks across fork().

1997-08-11 23:00:32 1997  Mark Kettenis  <kettenis@phys.uva.nl>

	* login/programs/xtmp.c (compare_entry):
	Partially undo patch made by Klaus Espenlaub.  There
	was no xtmp/utmp typo.  Added comment to cclarify this.
	* login/programs/xtmp.h: Likewise.

	* posix/getopt.c: Recognize Windog by _WINDOWS32 not WIN32.
	Patch by Paul D. Smith <psmith@BayNetworks.COM>.

1997-08-12 13:51  Ulrich Drepper  <drepper@cygnus.com>

	* login/getutid.c: Rename to __getutid and make getutid and getutxid
	weak aliases.
	Patch by ir. Mark M._Kettenis <kettenis@phys.uva.nl>.

1997-08-11 23:55  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/Makefile [subdir=misc] (sysdep_headers):
	Add bits/mman.h.

1997-08-11 08:51:21 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* stdlib/fmtmsg.c (fmtmsg): Add static to
	__libc_once_define macro.

	* libc.map (__progname_full, __progname): Added.

1997-08-04 08:31  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* sysdeps/unix/sysv/linux/if_index.c (if_nametoindex): Return 0
	if SIOGIFINDEX is not defined.
	(if_indextoname): Initialize "result" to NULL.
	(if_nametoindex, if_nameindex): Fix ENOSYS setting.

1997-08-11 11:58  Richard Henderson  <rth@cygnus.com>

	Sparc ISO C 9x exception handling:
	* sysdeps/sparc/fpu/bits/mathdef.h: New file.
	* sysdeps/sparc/fpu/fclrexcpt.c: New file.
	* sysdeps/sparc/fpu/fegetenv.c: New file.
	* sysdeps/sparc/fpu/fegetround.c: New file.
	* sysdeps/sparc/fpu/feholdexcpt.c: New file.
	* sysdeps/sparc/fpu/fesetenv.c: New file.
	* sysdeps/sparc/fpu/fesetround.c: New file.
	* sysdeps/sparc/fpu/feupdateenv.c: New file.
	* sysdeps/sparc/fpu/fgetexcptflg.c: New file.
	* sysdeps/sparc/fpu/fraiseexcpt.c: New file.
	* sysdeps/sparc/fpu/fsetexcptflg.c: New file.
	* sysdeps/sparc/fpu/ftestexcept.c: New file.
	* sysdeps/sparc/sparc32/fpu/bits/fenv.h: New file.
	* sysdeps/sparc/sparc64/fpu/bits/fenv.h: New file.

1997-08-11 11:58  Richard Henderson  <rth@cygnus.com>

	Sparc64 merge:
	* configure.in: Change up subdirectories, rename sparc8->sparcv8.

	* csu/Makefile: Nuke need-nopic-initfini bits.  The problem was
	that sparc64 ld did not recognize pic relocs at all.

	* elf/dl-deps.c: Include <string.h>.
	* elf/do-rel.h (elf_dynamic_do_rel): Take reloc address and size
	directly instead of the DT names to get them from.
	* elf/dynamic-link.h (_ELF_DYNAMIC_DO_RELOC): New macro distilled
	from ELF_DYNAMIC_DO_REL{,A}.  Define a second version that accounts
	for the possibility that DT_RELA and DT_JMPPLT overlap, as such is
	the case on the Sparc.

	* elf/elf.h: Stub out Elf64_Ver*, and make them the same as the
	Elf32_Ver* bits.  The linker does not even know to differentiate
	between the word sizes.  Someone should examine this and figure
	out what the proper sizes of things should be for 64-bit hosts
	before the sparc64 libraries are distributed.

	* shlib-versions: Rename sparc64 ld.so to not conflict with sparc32
	on the same machine.

	Move old sysdeps/sparc contents to sysdeps/sparc/sparc32,
	rename sparc8 subdir to sparcv8, move sysdeps/sparc64 content to
	sysdeps/sparc/sparc64.  Same for sysdeps/unix/sysv/linux/sparc.

	* sysdeps/sparc/Implies: Do ieee754 here.
	* sysdeps/sparc/configure.in: Move from sparc32/.
	* sysdeps/sparc/sparc32/Implies: Do wordsize here.
	* sysdeps/sparc/sparc64/Implies: Likewise.

	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_load_address):
	Use uninitialized .got to find load address instead of AT_BASE, as
	the later does not exist when running ld.so directly.

	* sysdeps/sparc/sparc32/fpu/fpu_control.h: Move from ../.
	* sysdeps/sparc/sparc64/fpu/fpu_control.h: Likewise.

	* sysdeps/sparc/sparc32/udiv_qrnnd.S: Clean up PIC support.

	* sysdeps/sparc/sparc64/Makefile (sysdep_routines): Add s_finitel
	and s_signbitl for stdio.
	* sysdeps/sparc/sparc64/configure.in: Remove, we no longer need
	nopic_initfini.

	* sysdeps/sparc/sparc64/bsd-_setjmp.S: Remove.
	* sysdeps/sparc/sparc64/bsd-setjmp.S: Remove.
	* sysdeps/unix/sysv/linux/sparc/sparc64/bsd-_setjmp.S: New empty file.
	* sysdeps/unix/sysv/linux/sparc/sparc64/bsd-setjmp.S: New empty file.
	* sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S: Add __longjmp alias.
	* sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S: Add weak _setjmp
	and setjmp entry points.

	* sysdeps/sparc/sparc64/dl-machine.h: Finish real implementation.

	* sysdeps/sparc/sparc64/elf/crtbegin.S: Add copyright, fix PIC.
	* sysdeps/sparc/sparc64/elf/crtend.S: Likewise.

	* sysdeps/unix/sysv/linux/sparc/bits/sigaction.h (struct sigaction):
	Fix sa_flags size for sparc64; add sa_restorer for kernel.

	* sysdeps/unix/sysv/linux/sparc/sparc64/brk.S: Fix PIC.
	* sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.

	* sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S: New file.

1997-08-10 18:29:08 1997  Mark Kettenis  <kettenis@phys.uva.nl>

	* login/login.c (login): Check for correct return value of
	utmpname.

1997-08-11 16:49  Ulrich Drepper  <drepper@cygnus.com>

	* time/tzset.c (__tzset_internal): Correctly handle TZ strings
	following incorrect old POSIX specs.
	Patch by Paul Eggert <eggert@twinsun.com>.

	* sysdeps/generic/bits/sigaction.h: Correct comment for SA_RESTART.
	* sysdeps/unix/bsd/osf/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/minix/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/sysv4/bits/sigaction.h: Likewise.
	Reported by NIIBE Yutaka <gniibe@mri.co.jp>.

1997-08-09  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* manual/math.texi: Define the macros @mul and @infinity and use
	them to format the multiplication and infinity signs.
	(FP Comparison Functions): Use @code, not @math, for C code
	examples.

	* elf/dl-profile.c: Add descriptions and implement reading of
This commit is contained in:
Ulrich Drepper
1997-08-14 01:54:13 +00:00
parent 0413b54c02
commit ca34d7a7c7
192 changed files with 2024 additions and 701 deletions

View File

@ -27,26 +27,29 @@ struct sigaction
__sigset_t sa_mask;
/* Special flags. */
unsigned int sa_flags;
unsigned long sa_flags;
/* Not used by Linux/Sparc yet. */
void (*sa_restorer)(void);
};
/* Bits in `sa_flags'. */
#define SA_NOCLDSTOP 0x00000008 /* Don't send SIGCHLD when children stop. */
#define SA_NOCLDSTOP 0x00000008 /* Don't send SIGCHLD when children stop. */
#ifdef __USE_MISC
#define SA_STACK 0x00000001 /* Use signal stack by using `sa_restorer'. */
#define SA_RESTART 0x00000002 /* Don't restart syscall on signal return. */
#define SA_INTERRUPT 0x00000010 /* Historical no-op. */
#define SA_NOMASK 0x00000020 /* Don't automatically block the signal when
its handler is being executed. */
#define SA_ONESHOT 0x00000004 /* Reset to SIG_DFL on entry to handler. */
# define SA_STACK 0x00000001 /* Use signal stack by using `sa_restorer'. */
# define SA_RESTART 0x00000002 /* Restart syscall on signal return. */
# define SA_INTERRUPT 0x00000010 /* Historical no-op. */
# define SA_NOMASK 0x00000020 /* Don't automatically block the signal when
its handler is being executed. */
# define SA_ONESHOT 0x00000004 /* Reset to SIG_DFL on entry to handler. */
/* Some aliases for the SA_ constants. */
#define SA_NODEFER SA_NOMASK
#define SA_RESETHAND SA_ONESHOT
# define SA_NODEFER SA_NOMASK
# define SA_RESETHAND SA_ONESHOT
#endif
/* Values for the HOW argument to `sigprocmask'. */
#define SIG_BLOCK 1 /* Block signals. */
#define SIG_UNBLOCK 2 /* Unblock signals. */
#define SIG_SETMASK 4 /* Set the set of blocked signals. */
#define SIG_BLOCK 1 /* Block signals. */
#define SIG_UNBLOCK 2 /* Unblock signals. */
#define SIG_SETMASK 4 /* Set the set of blocked signals. */

View File

@ -0,0 +1,7 @@
bits/mman.h
clone.S
kernel_stat.h
getcontext.S
setcontext.S
ucontext.h
init-first.h

View File

@ -0,0 +1,4 @@
ifeq ($(subdir),misc)
sysdep_headers += ucontext.h
sysdep_routines += getcontext setcontext
endif

View File

@ -0,0 +1 @@
/* There is no need for __longjmp what with setcontext. */

View File

@ -0,0 +1,77 @@
/* Definitions for POSIX memory map inerface. Linux/SPARC version.
Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _SYS_MMAN_H
# error "Never include this file directly. Use <sys/mman.h> instead"
#endif
/* The following definitions basically come from the kernel headers.
But the kernel header is not namespace clean. */
/* Protections are chosen from these bits, OR'd together. The
implementation does not necessarily support PROT_EXEC or PROT_WRITE
without PROT_READ. The only guarantees are that no writing will be
allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
#define PROT_READ 0x1 /* Page can be read. */
#define PROT_WRITE 0x2 /* Page can be written. */
#define PROT_EXEC 0x4 /* Page can be executed. */
#define PROT_NONE 0x0 /* Page can not be accessed. */
/* Sharing types (must choose one and only one of these). */
#define MAP_SHARED 0x01 /* Share changes. */
#define MAP_PRIVATE 0x02 /* Changes are private. */
#ifdef __USE_MISC
# define MAP_TYPE 0x0f /* Mask for type of mapping. */
#endif
/* Other flags. */
#define MAP_FIXED 0x10 /* Interpret addr exactly. */
#ifdef __USE_MISC
# define MAP_FILE 0x00
# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
# define MAP_ANON MAP_ANONYMOUS
# define MAP_RENAME MAP_ANONYMOUS
#endif
/* These are Linux-specific. */
#ifdef __USE_MISC
# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
# define MAP_LOCKED 0x0100 /* Lock the mapping. */
# define MAP_NORESERVE 0x0040 /* Don't check for reservations. */
# define _MAP_NEW 0x80000000 /* Binary compatibility with SunOS. */
#endif
/* Flags to `msync'. */
#define MS_ASYNC 1 /* Sync memory asynchronously. */
#define MS_SYNC 4 /* Synchronous memory sync. */
#define MS_INVALIDATE 2 /* Invalidate the caches. */
/* Flags for `mlockall'. */
#define MCL_CURRENT 0x2000 /* Lock all currently mapped pages. */
#define MCL_FUTURE 0x4000 /* Lock all additions to address
space. */
/* Flags for `mremap'. */
#ifdef __USE_GNU
# define MREMAP_MAYMOVE 1
#endif

View File

@ -0,0 +1,26 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _JMP_BUF_H
#define _JMP_BUF_H 1
#include <ucontext.h>
typedef ucontext_t __jmp_buf[1];
#endif /* jmp_buf.h */

View File

@ -0,0 +1,95 @@
/* Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/*
* Never include this file directly; use <sys/types.h> instead.
*/
#ifndef _BITS_TYPES_H
#define _BITS_TYPES_H 1
#include <features.h>
/* Convenience types. */
typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;
typedef unsigned long int __u_quad_t;
typedef long int __quad_t;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;
typedef __quad_t *__qaddr_t;
typedef __u_int __dev_t; /* Type of device numbers. */
typedef __u_int __uid_t; /* Type of user identifications. */
typedef __u_int __gid_t; /* Type of group identifications. */
typedef __u_int __ino_t; /* Type of file serial numbers. */
typedef __u_int __mode_t; /* Type of file attribute bitmasks. */
typedef __u_int __nlink_t; /* Type of file link counts. */
typedef long int __off_t; /* Type of file sizes and offsets. */
typedef __quad_t __loff_t; /* Type of file sizes and offsets. */
typedef int __pid_t; /* Type of process identifications. */
typedef long int __ssize_t; /* Type of a byte count, or error. */
typedef struct
{
int __val[2];
} __fsid_t; /* Type of file system IDs. */
/* Everythin' else. */
typedef int __daddr_t; /* The type of a disk address. */
typedef char *__caddr_t;
typedef long int __time_t;
typedef long int __swblk_t; /* Type of a swap block maybe? */
typedef long int __clock_t;
/* One element in the file descriptor mask array. */
typedef unsigned long int __fd_mask;
/* Due to incaution, we may have gotten these from a kernel header file. */
#undef __FD_SETSIZE
#undef __NFDBITS
#undef __FDMASK
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
#define __NFDBITS (8 * sizeof (__fd_mask))
#define __FDELT(d) ((d) / __NFDBITS)
#define __FDMASK(d) (1 << ((d) % __NFDBITS))
/* fd_set for select and pselect. */
typedef struct
{
/* XPG4.2 requires this member name. */
__fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
} __fd_set;
typedef int __key_t;
#endif /* bits/types.h */

View File

@ -0,0 +1,97 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* __brk is a special syscall under Linux since it never returns an
error. Instead, the error condition is indicated by returning the old
break value (instead of the new, requested one). */
#include <sysdep.h>
#define _ERRNO_H
#include <bits/errno.h>
#ifdef PIC
.section .bss
.align 8
.globl __curbrk
__curbrk: .skip 8
.type __curbrk,@object
.size __curbrk,8
#else
.common __curbrk, 8, 8
#endif
.text
ENTRY(__brk)
save %sp, -160, %sp
#ifdef PIC
1: call 2f
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
add %l7, %o7, %l7
#endif
LOADSYSCALL(brk)
mov %i0, %o0
ta 0x11
/* All the ways we can fail... */
bcs,pn %xcc, .Lerr1
nop
brz %i0, .Lok
subcc %i0, %o0, %g0
bne,pn %xcc, .Lerr0
/* Update __curbrk and return cleanly. */
.Lok: sethi %hi(__curbrk), %g1
or %g1, %lo(__curbrk), %g1
#ifdef PIC
ldx [%l7+%g1], %g1
stx %o0, [%g1]
#else
stx %o0, [%g4+%g1]
#endif
mov %g0, %i0
/* Don't use "ret" cause the preprocessor will eat it. */
jmpl %i7+8, %g0
restore
/* What a horrible way to die. */
.Lerr0: set ENOMEM, %o0
.Lerr1: sethi %hi(errno), %g1
or %g1, %lo(errno), %g1
#ifdef PIC
ldx [%l7+%g1], %g1
st %o0, [%g1]
#else
st %o0, [%g4+%g1]
#endif
#ifdef _LIBC_REENTRANT
call __errno_location
mov %o0,%l1
st %l1, [%o0]
#endif
sub %g0, 1, %i0
jmpl %i7+8, %g0
restore
.size __brk, .-__brk
weak_alias (__brk, brk)

View File

@ -0,0 +1 @@
/* _setjmp is in setjmp.S */

View File

@ -0,0 +1 @@
/* setjmp is in setjmp.S */

View File

@ -0,0 +1,89 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu).
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* clone() is even more special than fork() as it mucks with stacks
and invokes a function in the right context after its all over. */
#include <asm/errno.h>
#include <asm/unistd.h>
/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
.text
.align 4
.globl __libc_clone
.type __libc_clone,@function
.weak clone
__clone = __libc_clone
clone = __libc_clone
__libc_clone:
save %sp,-160,%sp
/* sanity check arguments */
brz,pn %i0, 99f
mov %i0, %l0 /* save fn */
brz,pn %i1, 99f
mov %i3, %l3 /* save arg */
/* Do the system call */
mov %i1, %o1
mov %i2, %o0
set __NR_clone, %g1
ta 0x11
bcs,pn %xcc, 99f
nop
brnz %o0, __thread_start
mov %o0, %i0
ret
restore
99:
#ifdef PIC
call 1f
sethi %hi(_GLOBAL_OFFSET_TABLE_-(99b-.)), %l7
1: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(99b-.)), %l7
add %l7, %o7, %l7
set EINVAL, %i0
sethi %hi(errno), %g2
or %g2, %lo(errno), %g2
st %i0, [%l7+%g2]
#else
sethi %hi(errno), %g2
add %g2, %g4, %g2
set EINVAL, %i0
st %i0, [%g2+%lo(errno)]
#endif
#ifdef _LIBC_REENTRANT
call __errno_location
nop
st %i0, [%o0]
#endif
mov -1,%i0
ret
restore
.size __libc_clone, .-__libc_clone
.type __thread_start,@function
__thread_start:
mov %g0, %fp /* terminate backtrace */
sub %sp, 6*8, %sp /* provide arg storage */
call %l0
mov %l3,%o0
call _exit,0
nop
.size __thread_start, .-__thread_start

View File

@ -0,0 +1,33 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sysdep.h>
PSEUDO (__libc_fork, fork, 0)
tst %o1
be %xcc, 1f
nop
/* child: return 0 */
clr %o0
1: ret
PSEUDO_END (__libc_fork)
weak_alias (__libc_fork, __fork)
weak_alias (__libc_fork, fork)

View File

@ -0,0 +1,30 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu).
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sysdep.h>
/* void getcontext(ucontext_t *); */
ENTRY(__getcontext)
ta 0x6e
ret
END(__getcontext)
weak_alias(__getcontext, getcontext)

View File

@ -0,0 +1,92 @@
/* Prepare arguments for library initialization function.
Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* The job of this fragment it to find argc and friends for INIT.
This is done in one of two ways: either in the stack context
of program start, or having dlopen pass them in. */
#include <sysdep.h>
#define __S1(x) #x
#define __S(x) __S1(x)
#ifdef PIC
#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
.weak _dl_starting_up
.global " #NAME "
.type " #NAME ",@function
" #NAME ":
save %sp, -128, %sp
1: call 11f
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
11: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
add %l7, %o7, %l7
/* Are we a dynamic libc being loaded into a static program? */
sethi %hi(_dl_starting_up), %l2
or %l2, %lo(_dl_starting_up), %l2
ldx [%l7+%l2], %l2
brz,pn %l2, 3f
sethi %hi(__libc_multiple_libcs), %l3
ld [%l2], %l4
mov %g0, %l2
movrz %l4, 1, %l2
3: or %l3, %lo(__libc_multiple_libcs), %l3
ldx [%l7+%l3], %l3
st %l2, [%l3]
/* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */
brnz,pn %l2, " #INIT "
restore
ldx [%sp+" __S(STACK_BIAS) "+22*8], %o0
add %sp, " __S(STACK_BIAS) "+23*8, %o1
sll %o0, 3, %o2
add %o2, %o1, %o2
ba " #INIT "
add %o2, 8, %o2
.size "#NAME ", .-" #NAME);
#else
#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
.weak _dl_starting_up
.global " #NAME "
.type " #NAME ",@function
" #NAME ":
/* Are we a dynamic libc being loaded into a static program? */
sethi %hi(_dl_starting_up), %g2
or %g2, %lo(_dl_starting_up), %g2
brz,pt %g2, 3f
sethi %hi(__libc_multiple_libcs), %g3
ld [%g4+%g2], %g1
mov %g0, %g2
movrz %g1, 1, %g2
3: or %g3, %lo(__libc_multiple_libcs), %g3
st %g2, [%g3+%g4]
/* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */
brnz,pn %g2, " #INIT "
nop
ldx [%sp+" __S(STACK_BIAS) "+22*8], %o0
add %sp, " __S(STACK_BIAS) "+23*8, %o1
sll %o0, 3, %o2
add %o2, %o1, %o2
add %o2, 8, %o2
ba,a " #INIT "
.size "#NAME ", .-" #NAME);
#endif

View File

@ -0,0 +1,22 @@
/* Definition of `struct stat' used in the kernel */
struct kernel_stat
{
unsigned int st_dev;
unsigned int st_ino;
unsigned int st_mode;
short int st_nlink;
unsigned int st_uid;
unsigned int st_gid;
unsigned int st_rdev;
long int st_size;
long int st_atime;
long int st_mtime;
long int st_ctime;
long int st_blksize;
long int st_blocks;
unsigned long int __unused1;
unsigned long int __unused2;
};
#define _HAVE___UNUSED1
#define _HAVE___UNUSED2

View File

@ -0,0 +1,46 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu).
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* longjmp is implemented in terms of the setcontext trap on Linux/Sparc64. */
#include <sysdep.h>
/* Offsets into the jmp_buf structure. */
#define O_mask_was_saved 512
#define O_gregs 32
#define O_g1 (O_gregs + 4*8)
/* void longjmp (sigjmp_buf env, int val) */
ENTRY(longjmp)
/* Modify the context with the value we want to return. */
movre %o1, 1, %o1
stx %o1, [%o0 + O_g1]
/* Let setcontext know if we want to modify the current sigmask. */
ld [%o0 + O_mask_was_saved], %o1
/* And bamf back to where we belong! */
ta 0x6f
END(longjmp)
strong_alias(longjmp, __longjmp)

View File

@ -0,0 +1,37 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sysdep.h>
ENTRY (__libc_pipe)
mov %o0, %o2 /* Save PIPEDES. */
LOADSYSCALL(pipe)
ta 0x11
bcc,pn %xcc, 2f
nop
SYSCALL_ERROR_HANDLER
2: st %o0, [%o2] /* PIPEDES[0] = %o0; */
st %o1, [%o2 + 4] /* PIPEDES[1] = %o1; */
retl
clr %o0
PSEUDO_END (__libc_pipe)
weak_alias (__libc_pipe, __pipe)
weak_alias (__libc_pipe, pipe)

View File

@ -0,0 +1,26 @@
/* Low-level statistical profiling support function. Linux/Sparc64 version.
Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <signal.h>
void
profil_counter (int signo, __siginfo_t *si)
{
profil_count ((void *) si->si_regs.tpc);
}

View File

@ -0,0 +1,33 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu).
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sysdep.h>
/* void setcontext(ucontext_t *ctx); */
.weak setcontext
ENTRY(setcontext)
mov 1, %o1
/* void __setcontext(ucontext_t *ctx, int restoremask); */
ENTRY(__setcontext)
ta 0x6f
END(__setcontext)

View File

@ -0,0 +1,67 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu).
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* __sigsetjmp is implemented in terms of the getcontext trap on
Linux/Sparc64. */
#include <sysdep.h>
/* Offsets into the jmp_buf structure. */
#define O_mask_was_saved 512
#define O_gregs 32
#define O_g1 (O_gregs + 4*8)
/* int _setjmp(jmp_buf) */
.weak _setjmp
ENTRY(_setjmp)
ba __sigsetjmp_local
set 0, %o1
END(setjmp)
/* int setjmp(jmp_buf) */
.weak setjmp
ENTRY(setjmp)
set 1, %o1
END(setjmp)
/* int __sigsetjmp(jmp_buf, savemask) */
ENTRY(__sigsetjmp)
__sigsetjmp_local:
/* Record whether the user is intending to save the sigmask. */
st %o1, [%o0 + O_mask_was_saved]
/* Load up our return value, as longjmp is going to override
the jmp_buf on its way back. */
mov %g0, %g1
/* And call getcontext! */
ta 0x6e
retl
mov %g1, %o0
END(__sigsetjmp)

View File

@ -0,0 +1 @@
/* There is no need for __sigjmp_save what with getcontext. */

View File

@ -0,0 +1,39 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sysdep.h>
.text
ENTRY (syscall)
mov %o0,%g1
mov %o1,%o0
mov %o2,%o1
mov %o3,%o2
mov %o4,%o3
mov %o5,%o4
ta 0x11
bcc,pt %xcc,1f
nop
SYSCALL_ERROR_HANDLER
1: retl
PSEUDO_END (syscall)

View File

@ -0,0 +1,26 @@
# File name Caller Syscall name # args Strong name Weak names
# Whee! 64-bit systems naturally implement llseek.
llseek EXTRA lseek 3 llseek
# Override select.S in parent directory:
select - select 5 __select select
accept - accept 3 __accept accept
bind - bind 3 __bind bind
connect - connect 3 __connect connect
getpeername - getpeername 3 __getpeername getpeername
getsockname - getsockname 3 __getsockname getsockname
getsockopt - getsockopt 5 __getsockopt getsockopt
listen - listen 2 __listen listen
recv - recv 4 __recv recv
recvfrom - recvfrom 6 __recvfrom recvfrom
recvmsg - recvmsg 3 __recvmsg recvmsg
send - send 4 __send send
sendmsg - sendmsg 3 __sendmsg sendmsg
sendto - sendto 6 __sendto sendto
setsockopt - setsockopt 5 __setsockopt setsockopt
shutdown - shutdown 2 __shutdown shutdown
socketpair - socketpair 4 __socketpair socketpair
# Another broken Linux/i386 idea layed to rest
ptrace - ptrace 4 __ptrace ptrace

View File

@ -0,0 +1,31 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Define errno */
.section .bss
.globl errno
.align 2
errno: .space 4
.type errno, @object
.size errno, 4
.globl __errno
__errno = errno

View File

@ -0,0 +1,138 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _LINUX_SPARC64_SYSDEP_H
#define _LINUX_SPARC64_SYSDEP_H 1
#include <sysdeps/unix/sysdep.h>
#undef SYS_ify
#define SYS_ify(syscall_name) __NR_##syscall_name
#ifdef ASSEMBLER
#ifdef DONT_LOAD_G1
# define LOADSYSCALL(x)
#else
# define LOADSYSCALL(x) mov __NR_##x, %g1
#endif
/* Linux/SPARC uses a different trap number */
#undef PSEUDO
#undef ENTRY
#define ENTRY(name) \
.global C_SYMBOL_NAME(name); \
.align 2; \
C_LABEL(name); \
.type name,@function;
#ifdef PIC
# ifdef _LIBC_REENTRANT
# define SYSCALL_ERROR_HANDLER \
.global C_SYMBOL_NAME(errno); \
.type C_SYMBOL_NAME(errno),@object; \
save %sp,-160,%sp; \
101: call 102f; \
sethi %hi(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \
102: or %g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \
sethi %hi(errno),%i1; \
add %g2,%o7,%l7; \
or %i1,%lo(errno),%i1; \
ldx [%l7+%i1],%g2; \
st %i0,[%g2]; \
call __errno_location; \
nop; \
st %i0,[%o0]; \
sub %g0,1,%i0; \
jmpl %i7+8, %g0; \
restore
# else
# define SYSCALL_ERROR_HANDLER \
.global C_SYMBOL_NAME(errno); \
.type C_SYMBOL_NAME(errno),@object; \
mov %o7,%g3; \
101: call 102f; \
sethi %hi(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \
102: or %g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \
sethi %hi(errno),%o1; \
add %g2,%o7,%l7; \
or %o1,%lo(errno),%o1; \
mov %g3,%o7; \
ldx [%l7+%o1],%g2; \
st %o0,[%g2]
# endif
#else
# ifdef _LIBC_REENTRANT
# define SYSCALL_ERROR_HANDLER \
.global C_SYMBOL_NAME(errno); \
.type C_SYMBOL_NAME(errno),@object; \
save %sp,-160,%sp; \
sethi %hi(errno),%g1; \
or %g1,%lo(errno),%g1; \
st %i0,[%g1+%g4]; \
call __errno_location; \
nop; \
st %i0,[%o0]; \
sub %g0,1,%i0; \
jmpl %i7+8, %g0; \
restore
# else
# define SYSCALL_ERROR_HANDLER \
.global C_SYMBOL_NAME(errno); \
.type C_SYMBOL_NAME(errno),@object; \
sethi %hi(errno),%g1; \
or %g1,%lo(errno),%g1; \
st %i0,[%g1+%g4]; \
retl; \
sub %g0,1,%i0
# endif
#endif
#define PSEUDO(name, syscall_name, args) \
.text; \
ENTRY(name); \
LOADSYSCALL(syscall_name); \
ta 0x11; \
bcc,pt %xcc,1f; \
nop; \
SYSCALL_ERROR_HANDLER; \
1:
#undef PSEUDO_END
#define PSEUDO_END(name) \
.size name,.-name
#undef END
#define END(name) \
.size name,.-name
/* Careful here! This "ret" define can interfere; use jmpl if unsure. */
#define ret retl; nop
#define r0 %o0
#define r1 %o1
#define MOVE(x,y) mov x, y
#endif /* ASSEMBLER */
/* This is the offset from the %sp to the backing store above the
register windows. So if you poke stack memory directly you add this. */
#define STACK_BIAS 2047
#endif /* linux/sparc64/sysdep.h */

View File

@ -0,0 +1,67 @@
#ifndef _UCONTEXT_H
#define _UCONTEXT_H
#include <signal.h>
#define MC_TSTATE 0
#define MC_PC 1
#define MC_NPC 2
#define MC_Y 3
#define MC_G1 4
#define MC_G2 5
#define MC_G3 6
#define MC_G4 7
#define MC_G5 8
#define MC_G6 9
#define MC_G7 10
#define MC_O0 11
#define MC_O1 12
#define MC_O2 13
#define MC_O3 14
#define MC_O4 15
#define MC_O5 16
#define MC_O6 17
#define MC_O7 18
#define MC_NGREG 19
typedef unsigned long mc_greg_t;
typedef mc_greg_t mc_gregset_t[MC_NGREG];
#define MC_MAXFPQ 16
struct mc_fq {
unsigned long *mcfq_addr;
unsigned int mcfq_insn;
};
struct mc_fpu {
union {
unsigned int sregs[32];
unsigned long dregs[32];
long double qregs[16];
} mcfpu_fregs;
unsigned long mcfpu_fsr;
unsigned long mcfpu_fprs;
unsigned long mcfpu_gsr;
struct mc_fq *mcfpu_fq;
unsigned char mcfpu_qcnt;
unsigned char mcfpu_qentsz;
unsigned char mcfpu_enab;
};
typedef struct mc_fpu mc_fpu_t;
typedef struct {
mc_gregset_t mc_gregs;
mc_greg_t mc_fp;
mc_greg_t mc_i7;
mc_fpu_t mc_fpregs;
} mcontext_t;
struct ucontext {
struct ucontext *uc_link;
unsigned long uc_flags;
unsigned long uc_sigmask;
mcontext_t uc_mcontext;
};
typedef struct ucontext ucontext_t;
#endif /* ucontext.h */