diff options
| -rw-r--r-- | libc/sysdeps/linux/hppa/bits/ipc.h | 63 | ||||
| -rw-r--r-- | libc/sysdeps/linux/hppa/bits/mman.h | 84 | ||||
| -rw-r--r-- | libc/sysdeps/linux/hppa/bits/setjmp.h | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/hppa/sys/procfs.h | 113 | ||||
| -rw-r--r-- | libc/sysdeps/linux/hppa/sys/ucontext.h | 67 | 
5 files changed, 328 insertions, 1 deletions
| diff --git a/libc/sysdeps/linux/hppa/bits/ipc.h b/libc/sysdeps/linux/hppa/bits/ipc.h new file mode 100644 index 000000000..d80cf0699 --- /dev/null +++ b/libc/sysdeps/linux/hppa/bits/ipc.h @@ -0,0 +1,63 @@ +/* Copyright (C) 1995-1999, 2000 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 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. + +   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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ + +#ifndef _SYS_IPC_H +# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead." +#endif + +#include <bits/types.h> +#include <bits/wordsize.h> + +/* Mode bits for `msgget', `semget', and `shmget'.  */ +#define IPC_CREAT	01000		/* Create key if key does not exist. */ +#define IPC_EXCL	02000		/* Fail if key exists.  */ +#define IPC_NOWAIT	04000		/* Return error on wait.  */ + +/* Control commands for `msgctl', `semctl', and `shmctl'.  */ +#define IPC_RMID	0		/* Remove identifier.  */ +#define IPC_SET		1		/* Set `ipc_perm' options.  */ +#define IPC_STAT	2		/* Get `ipc_perm' options.  */ +#ifdef __USE_GNU +# define IPC_INFO	3		/* See ipcs.  */ +#endif + +/* Special key values.  */ +#define IPC_PRIVATE	((__key_t) 0)	/* Private key.  */ + + +/* Data structure used to pass permission information to IPC operations.  */ +struct ipc_perm +  { +    __key_t __key;			/* Key.  */ +    __uid_t uid;			/* Owner's user ID.  */ +    __gid_t gid;			/* Owner's group ID.  */ +    __uid_t cuid;			/* Creator's user ID.  */ +    __gid_t cgid;			/* Creator's group ID.  */ +#if __WORDSIZE == 32 +    unsigned short int __pad1; +    unsigned short int mode;		/* Read/write permission.  */ +    unsigned short int __pad2; +#else +    __mode_t mode;			/* Read/write permission.  */ +    unsigned short int __pad2; +#endif +    unsigned short int __seq;		/* Sequence number.  */ +    unsigned int __pad3; +    unsigned long long int __unused1; +    unsigned long long int __unused2; +  }; diff --git a/libc/sysdeps/linux/hppa/bits/mman.h b/libc/sysdeps/linux/hppa/bits/mman.h new file mode 100644 index 000000000..9c287274f --- /dev/null +++ b/libc/sysdeps/linux/hppa/bits/mman.h @@ -0,0 +1,84 @@ +/* Definitions for POSIX memory map interface.  Linux/HPPA version. +   Copyright (C) 1997, 1998, 2000, 2003 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 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. + +   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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; 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 use <bits/mman.h> directly; include <sys/mman.h> instead." +#endif + +/* these are basically taken from the kernel definitions */ + +#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 */ +#define PROT_GROWSDOWN	0x01000000	/* Extend change to start of +					   growsdown vma (mprotect only).  */ +#define PROT_GROWSUP	0x02000000	/* Extend change to start of +					   growsup vma (mprotect only).  */ + +#define MAP_SHARED	0x01		/* Share changes */ +#define MAP_PRIVATE	0x02		/* Changes are private */ +#define MAP_TYPE	0x03		/* Mask for type of mapping */ +#define MAP_FIXED	0x04		/* Interpret addr exactly */ +#define MAP_ANONYMOUS	0x10		/* don't use a file */ + +#define MAP_DENYWRITE	0x0800		/* ETXTBSY */ +#define MAP_EXECUTABLE	0x1000		/* mark it as an executable */ +#define MAP_LOCKED	0x2000		/* pages are locked */ +#define MAP_NORESERVE	0x4000		/* don't check for reservations */ +#define MAP_GROWSDOWN	0x8000		/* stack-like segment */ +#define MAP_POPULATE	0x10000		/* populate (prefault) pagetables */ +#define MAP_NONBLOCK	0x20000		/* do not block on IO */ + +#define MS_SYNC		1		/* synchronous memory sync */ +#define MS_ASYNC	2		/* sync memory asynchronously */ +#define MS_INVALIDATE	4		/* invalidate the caches */ + +#define MCL_CURRENT	1		/* lock all current mappings */ +#define MCL_FUTURE	2		/* lock all future mappings */ + +#define MADV_NORMAL     0               /* no further special treatment */ +#define MADV_RANDOM     1               /* expect random page references */ +#define MADV_SEQUENTIAL 2               /* expect sequential page references */ +#define MADV_WILLNEED   3               /* will need these pages */ +#define MADV_DONTNEED   4               /* dont need these pages */ +#define MADV_SPACEAVAIL 5               /* insure that resources are reserved */ +#define MADV_VPS_PURGE  6               /* Purge pages from VM page cache */ +#define MADV_VPS_INHERIT 7              /* Inherit parents page size */ + +/* The range 12-64 is reserved for page size specification. */ +#define MADV_4K_PAGES   12              /* Use 4K pages  */ +#define MADV_16K_PAGES  14              /* Use 16K pages */ +#define MADV_64K_PAGES  16              /* Use 64K pages */ +#define MADV_256K_PAGES 18              /* Use 256K pages */ +#define MADV_1M_PAGES   20              /* Use 1 Megabyte pages */ +#define MADV_4M_PAGES   22              /* Use 4 Megabyte pages */ +#define MADV_16M_PAGES  24              /* Use 16 Megabyte pages */ +#define MADV_64M_PAGES  26              /* Use 64 Megabyte pages */ + +/* compatibility flags */ +#define MAP_ANON	MAP_ANONYMOUS +#define MAP_FILE	0 +#define MAP_VARIABLE	0 + +/* Flags for `mremap'.  */ +#ifdef __USE_GNU +# define MREMAP_MAYMOVE 1 +# define MREMAP_FIXED	2 +#endif diff --git a/libc/sysdeps/linux/hppa/bits/setjmp.h b/libc/sysdeps/linux/hppa/bits/setjmp.h index 253e92603..4395b8f56 100644 --- a/libc/sysdeps/linux/hppa/bits/setjmp.h +++ b/libc/sysdeps/linux/hppa/bits/setjmp.h @@ -40,6 +40,6 @@ typedef double __jmp_buf[21];  /* Test if longjmp to JMPBUF would unwind the frame containing a local     variable at ADDRESS.  */  #define _JMPBUF_UNWINDS(_jmpbuf, _address)				\ -     ((void *)(_address) > (void *)(_jmpbuf[JB_SP])) +     ((void *)(_address) > (void *)(((unsigned long *) _jmpbuf)[JB_SP]))  #endif	/* bits/setjmp.h */ diff --git a/libc/sysdeps/linux/hppa/sys/procfs.h b/libc/sysdeps/linux/hppa/sys/procfs.h new file mode 100644 index 000000000..2e6d10956 --- /dev/null +++ b/libc/sysdeps/linux/hppa/sys/procfs.h @@ -0,0 +1,113 @@ +/* Copyright (C) 1996, 1997, 1999, 2000 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 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. + +   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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ + +#ifndef _SYS_PROCFS_H +#define _SYS_PROCFS_H	1 + +/* This is somewhat modelled after the file of the same name on SVR4 +   systems.  It provides a definition of the core file format for ELF +   used on Linux.  It doesn't have anything to do with the /proc file +   system, even though Linux has one. + +   Anyway, the whole purpose of this file is for GDB and GDB only. +   Don't read too much into it.  Don't use it for anything other than +   GDB unless you know what you are doing.  */ + +#include <features.h> +#include <signal.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/ucontext.h> +#include <sys/user.h> +#include <asm/elf.h> + +__BEGIN_DECLS + +struct elf_siginfo +  { +    int si_signo;			/* Signal number.  */ +    int si_code;			/* Extra code.  */ +    int si_errno;			/* Errno.  */ +  }; + +/* Definitions to generate Intel SVR4-like core files.  These mostly +   have the same names as the SVR4 types with "elf_" tacked on the +   front to prevent clashes with Linux definitions, and the typedef +   forms have been avoided.  This is mostly like the SVR4 structure, +   but more Linuxy, with things that Linux does not support and which +   GDB doesn't really use excluded.  */ + +struct elf_prstatus +  { +    struct elf_siginfo pr_info;		/* Info associated with signal.  */ +    short int pr_cursig;		/* Current signal.  */ +    unsigned long int pr_sigpend;	/* Set of pending signals.  */ +    unsigned long int pr_sighold;	/* Set of held signals.  */ +    __pid_t pr_pid; +    __pid_t pr_ppid; +    __pid_t pr_pgrp; +    __pid_t pr_sid; +    struct timeval pr_utime;		/* User time.  */ +    struct timeval pr_stime;		/* System time.  */ +    struct timeval pr_cutime;		/* Cumulative user time.  */ +    struct timeval pr_cstime;		/* Cumulative system time.  */ +    elf_gregset_t pr_reg;		/* GP registers.  */ +    int pr_fpvalid;			/* True if math copro being used.  */ +  }; + + +#define ELF_PRARGSZ     (80)    /* Number of chars for args.  */ + +struct elf_prpsinfo +  { +    char pr_state;			/* Numeric process state.  */ +    char pr_sname;			/* Char for pr_state.  */ +    char pr_zomb;			/* Zombie.  */ +    char pr_nice;			/* Nice val.  */ +    unsigned long int pr_flag;		/* Flags.  */ +    unsigned int pr_uid; +    unsigned int pr_gid; +    int pr_pid, pr_ppid, pr_pgrp, pr_sid; +    /* Lots missing */ +    char pr_fname[16];			/* Filename of executable.  */ +    char pr_psargs[ELF_PRARGSZ];	/* Initial part of arg list.  */ +  }; + + +/* The rest of this file provides the types for emulation of the +   Solaris <proc_service.h> interfaces that should be implemented by +   users of libthread_db.  */ + +/* Addresses.  */ +typedef void *psaddr_t; + +/* Register sets.  Linux has different names.  */ +typedef elf_gregset_t prgregset_t; +typedef elf_fpregset_t prfpregset_t; + +/* We don't have any differences between processes and threads, +   therefore have only one PID type.  */ +typedef __pid_t lwpid_t; + +/* Process status and info.  In the end we do provide typedefs for them.  */ +typedef struct elf_prstatus prstatus_t; +typedef struct elf_prpsinfo prpsinfo_t; + +__END_DECLS + +#endif	/* sys/procfs.h */ diff --git a/libc/sysdeps/linux/hppa/sys/ucontext.h b/libc/sysdeps/linux/hppa/sys/ucontext.h new file mode 100644 index 000000000..143114384 --- /dev/null +++ b/libc/sysdeps/linux/hppa/sys/ucontext.h @@ -0,0 +1,67 @@ +/* Copyright (C) 1997, 1998, 2000, 2001 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 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. + +   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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ + +/* Don't rely on this, the interface is currently messed up and may need to +   be broken to be fixed.  */ +#ifndef _SYS_UCONTEXT_H +#define _SYS_UCONTEXT_H	1 + +#include <features.h> +#include <signal.h> + +/* We need the signal context definitions even if they are not used +   included in <signal.h>.  */ +#include <bits/sigcontext.h> + + +/* Type for general register.  */ +typedef unsigned long int greg_t; + +/* Number of general registers.  */ +#define NGREG	80 +#define NFPREG	32 + +/* Container for all general registers.  */ +typedef struct gregset +  { +    greg_t g_regs[32]; +    greg_t sr_regs[8]; +    greg_t cr_regs[24]; +    greg_t g_pad[16]; +  } gregset_t; + +/* Container for all FPU registers.  */ +typedef struct fpregset +  { +    double fp_dregs[32]; +  } fpregset_t; + +/* Context to describe whole processor state.  */ +typedef struct sigcontext mcontext_t; + +/* Userlevel context.  */ +typedef struct ucontext +  { +    unsigned long int uc_flags; +    struct ucontext *uc_link; +    stack_t uc_stack; +    mcontext_t uc_mcontext; +    __sigset_t uc_sigmask; +  } ucontext_t; + +#endif /* sys/ucontext.h */ | 
