From acffbf7d150101fe96c4fa1256fa73371049d4ff Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Mon, 25 Jan 2016 23:53:18 +0100 Subject: hppa: unbreak toolchain building At least allow to build a toolchain for hppa. Sync some headers with glibc. --- libc/sysdeps/linux/hppa/bits/atomic.h | 7 +- libc/sysdeps/linux/hppa/bits/mman.h | 122 ++++++++++++++++++++-------------- libc/sysdeps/linux/hppa/sys/procfs.h | 16 +++-- libc/sysdeps/linux/hppa/sys/user.h | 1 + 4 files changed, 85 insertions(+), 61 deletions(-) create mode 100644 libc/sysdeps/linux/hppa/sys/user.h (limited to 'libc') diff --git a/libc/sysdeps/linux/hppa/bits/atomic.h b/libc/sysdeps/linux/hppa/bits/atomic.h index 0bf5a6a5f..9890af2f0 100644 --- a/libc/sysdeps/linux/hppa/bits/atomic.h +++ b/libc/sysdeps/linux/hppa/bits/atomic.h @@ -20,7 +20,7 @@ #include #include -#define ABORT_INSTRUCTION __asm__(__UCLIBC_ABORT_INSTRUCTION__) +#define ABORT_INSTRUCTION __asm__("iitlbp %r0,(%sr0, %r0)") /* We need EFAULT, ENOSYS */ #if !defined EFAULT && !defined ENOSYS @@ -58,7 +58,6 @@ typedef uintmax_t uatomic_max_t; #define LWS_CLOBBER "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" #define ASM_EAGAIN "11" -#if __ASSUME_LWS_CAS /* The only basic operation needed is compare and exchange. */ # define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ ({ \ @@ -94,10 +93,6 @@ typedef uintmax_t uatomic_max_t; /* Return 1 if it was already acquired */ \ (ret != oldval); \ }) -#else -# error __ASSUME_LWS_CAS is required to build uClibc. -#endif -/* __ASSUME_LWS_CAS */ #endif /* _BITS_ATOMIC_H */ diff --git a/libc/sysdeps/linux/hppa/bits/mman.h b/libc/sysdeps/linux/hppa/bits/mman.h index ca2787f7d..cbde4b8d4 100644 --- a/libc/sysdeps/linux/hppa/bits/mman.h +++ b/libc/sysdeps/linux/hppa/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/HPPA version. - Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc. + Copyright (C) 1997-2015 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 @@ -13,19 +13,19 @@ 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, see + License along with the GNU C Library. If not, see . */ #ifndef _SYS_MMAN_H # error "Never use directly; include instead." #endif -/* these are basically taken from the kernel definitions */ +/* These are 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_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 @@ -33,61 +33,83 @@ #define MAP_SHARED 0x01 /* Share changes */ #define MAP_PRIVATE 0x02 /* Changes are private */ -#define MAP_TYPE 0x03 /* Mask for type of mapping */ +#ifdef __USE_MISC +# define MAP_TYPE 0x03 /* Mask for type of mapping */ +#endif + +/* Other flags. */ #define MAP_FIXED 0x04 /* Interpret addr exactly */ -#define MAP_ANONYMOUS 0x10 /* don't use a file */ +#ifdef __USE_MISC +# define MAP_FILE 0x0 +# define MAP_ANONYMOUS 0x10 /* Don't use a file */ +# define MAP_ANON MAP_ANONYMOUS +# define MAP_VARIABLE 0 +/* When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. */ +# define MAP_HUGE_SHIFT 26 +# define MAP_HUGE_MASK 0x3f +#endif + +/* These are Linux-specific. */ +#ifdef __USE_MISC +# 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 */ +#endif -#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 MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could - be uninitialized. */ +/* Flags to "msync" */ +#define MS_SYNC 1 /* Synchronous memory sync */ +#define MS_ASYNC 2 /* Sync memory asynchronously */ +#define MS_INVALIDATE 4 /* Invalidate the caches */ -#define MS_SYNC 1 /* synchronous memory sync */ -#define MS_ASYNC 2 /* sync memory asynchronously */ -#define MS_INVALIDATE 4 /* invalidate the caches */ +/* Flags to "mlockall" */ +#define MCL_CURRENT 1 /* Lock all current mappings */ +#define MCL_FUTURE 2 /* Lock all future mappings */ -#define MCL_CURRENT 1 /* lock all current mappings */ -#define MCL_FUTURE 2 /* lock all future mappings */ +/* Flags for `mremap'. */ +#ifdef __USE_GNU +# define MREMAP_MAYMOVE 1 +# define MREMAP_FIXED 2 +#endif -/* Advice to "madvise" */ -#ifdef __USE_BSD -# 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 */ +/* Advice to "madvise" */ +#ifdef __USE_MISC +# 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 */ # define MADV_REMOVE 9 /* Remove these pages and resources. */ # define MADV_DONTFORK 10 /* Do not inherit across fork. */ # define MADV_DOFORK 11 /* Do inherit across fork. */ +# define MADV_MERGEABLE 65 /* KSM may merge identical pages */ +# define MADV_UNMERGEABLE 66 /* KSM may not merge identical pages */ #endif /* 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 +/* These are Linux-specific. */ +#ifdef __USE_MISC +# 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. */ #endif - +/* The POSIX people had to invent similar names for the same things. */ +#ifdef __USE_XOPEN2K +# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ +# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ +# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ +# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ +# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ +#endif diff --git a/libc/sysdeps/linux/hppa/sys/procfs.h b/libc/sysdeps/linux/hppa/sys/procfs.h index 24e4c3174..8d12dfb65 100644 --- a/libc/sysdeps/linux/hppa/sys/procfs.h +++ b/libc/sysdeps/linux/hppa/sys/procfs.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1996-2015 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 @@ -12,7 +12,7 @@ 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, see + License along with the GNU C Library. If not, see . */ #ifndef _SYS_PROCFS_H @@ -28,15 +28,21 @@ GDB unless you know what you are doing. */ #include -#include #include #include -#include #include -#include __BEGIN_DECLS +typedef unsigned long elf_greg_t; +#define ELF_NGREG 80 /* We only need 64 at present, but leave space + for expansion. */ +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; + +#define ELF_NFPREG 32 +typedef double elf_fpreg_t; +typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; + struct elf_siginfo { int si_signo; /* Signal number. */ diff --git a/libc/sysdeps/linux/hppa/sys/user.h b/libc/sysdeps/linux/hppa/sys/user.h new file mode 100644 index 000000000..c871f1a03 --- /dev/null +++ b/libc/sysdeps/linux/hppa/sys/user.h @@ -0,0 +1 @@ +/* This file is not needed, but in practice gdb might try to include it. */ -- cgit v1.2.3