summaryrefslogtreecommitdiff
path: root/ports/sysdeps/unix/sysv/linux/alpha
diff options
context:
space:
mode:
Diffstat (limited to 'ports/sysdeps/unix/sysv/linux/alpha')
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h1
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h4
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h102
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h4
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h4
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h12
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h4
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/configure2
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/configure.ac (renamed from ports/sysdeps/unix/sysv/linux/alpha/configure.in)0
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h4
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S2
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S2
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S18
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c14
14 files changed, 60 insertions, 113 deletions
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
index 2e31691c2b..02c9a7f751 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
+++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
@@ -36,6 +36,7 @@
#define __O_DIRECT 02000000 /* Direct disk access. */
#define __O_NOATIME 04000000 /* Do not set atime. */
#define __O_PATH 040000000 /* Resolve pathname but do not open file. */
+#define __O_TMPFILE 0100100000 /* Atomically create nameless file. */
/* Not necessary, files are always with 64bit off_t. */
#define __O_LARGEFILE 0
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
index 66903d3ac2..deb3a2b213 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
+++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
@@ -49,6 +49,6 @@ struct ipc_perm
unsigned int mode; /* Read/write permission. */
unsigned short int __seq; /* Sequence number. */
unsigned short int __pad1;
- unsigned long int __unused1;
- unsigned long int __unused2;
+ unsigned long int __glibc_reserved1;
+ unsigned long int __glibc_reserved2;
};
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h
index c51b05d37f..a0d087c1fa 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h
+++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h
@@ -23,46 +23,7 @@
/* 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. */
-#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). */
-
-/* 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 0x100 /* Interpret addr exactly. */
-#ifdef __USE_MISC
-# define MAP_FILE 0
-# define MAP_ANONYMOUS 0x10 /* Don't use a file. */
-# define MAP_ANON MAP_ANONYMOUS
-/* 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
-
-/* Not used by Linux, but here to make sure we don't clash with
- OSF/1 defines. */
-#if 0 && defined __USE_BSD
-# define MAP_HASSEMAPHORE 0x0200
-# define MAP_INHERIT 0x0400
-# define MAP_UNALIGNED 0x0800
-#endif
+#define __MAP_ANONYMOUS 0x10 /* Don't use a file. */
/* These are Linux-specific. */
#ifdef __USE_MISC
@@ -77,53 +38,28 @@
# define MAP_HUGETLB 0x100000 /* Create huge page mapping. */
#endif
-/* Flags to `msync'. */
-#define MS_ASYNC 1 /* Sync memory asynchronously. */
-#define MS_SYNC 2 /* Synchronous memory sync. */
-#define MS_INVALIDATE 4 /* Invalidate the caches. */
-
/* Flags for `mlockall'. */
-#define MCL_CURRENT 8192 /* Lock all currently mapped pages. */
-#define MCL_FUTURE 16384 /* Lock all additions to address
- space. */
+#define MCL_CURRENT 8192
+#define MCL_FUTURE 16384
-/* Flags for `mremap'. */
-#ifdef __USE_GNU
-# define MREMAP_MAYMOVE 1
-# define MREMAP_FIXED 2
-#endif
+#include <bits/mman-linux.h>
+
+/* Values that differ from standard <mman-linux.h>. For the most part newer
+ values are shared, but older values are skewed. */
+
+#undef MAP_FIXED
+#define MAP_FIXED 0x100
+
+#undef MS_SYNC
+#define MS_SYNC 2
+#undef MS_INVALIDATE
+#define MS_INVALIDATE 4
-/* 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 6 /* Don't need these pages. */
-# 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 12 /* KSM may merge identical pages. */
-# define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */
-# define MADV_HUGEPAGE 14 /* Worth backing with hugepages. */
-# define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages. */
-# define MADV_DONTDUMP 16 /* Exclude from the core dump. */
-# define MADV_DODUMP 17 /* Clear MADV_DONTDUMP. */
-# define MADV_HWPOISON 100 /* Poison a page for testing. */
+# undef MADV_DONTNEED
+# define MADV_DONTNEED 6
#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 6 /* Don't need these pages. */
-#endif
-
-/* Not used by Linux, but here to make sure we don't clash with
- OSF/1 defines. */
-#if 0 && defined __USE_BSD
-# define MADV_DONTNEED_COMPAT 4 /* Old version? */
-# define MADV_SPACEAVAIL 5 /* Ensure resources are available. */
+# undef POSIX_MADV_DONTNEED
+# define POSIX_MADV_DONTNEED 6
#endif
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h
index 8bb057b4ee..415ef21a99 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h
+++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h
@@ -46,8 +46,8 @@ struct msqid_ds
msglen_t msg_qbytes; /* max number of bytes allowed on queue */
__pid_t msg_lspid; /* pid of last msgsnd() */
__pid_t msg_lrpid; /* pid of last msgrcv() */
- unsigned long int __unused1;
- unsigned long int __unused2;
+ unsigned long int __glibc_reserved1;
+ unsigned long int __glibc_reserved2;
};
#ifdef __USE_MISC
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h
index c2d73aa4e8..739cbc415f 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h
+++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h
@@ -41,8 +41,8 @@ struct semid_ds
__time_t sem_otime; /* last semop() time */
__time_t sem_ctime; /* last time changed by semctl() */
unsigned long int sem_nsems; /* number of semaphores in set */
- unsigned long int __unused1;
- unsigned long int __unused2;
+ unsigned long int __glibc_reserved1;
+ unsigned long int __glibc_reserved2;
};
/* The user should define a union like the following to use it for arguments
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h
index 125e277f35..cd9476f4de 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h
+++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h
@@ -56,8 +56,8 @@ struct shmid_ds
__pid_t shm_cpid; /* pid of creator */
__pid_t shm_lpid; /* pid of last shmop */
shmatt_t shm_nattch; /* number of current attaches */
- unsigned long int __unused1;
- unsigned long int __unused2;
+ unsigned long int __glibc_reserved1;
+ unsigned long int __glibc_reserved2;
};
#ifdef __USE_MISC
@@ -79,10 +79,10 @@ struct shminfo
unsigned long int shmmni;
unsigned long int shmseg;
unsigned long int shmall;
- unsigned long int __unused1;
- unsigned long int __unused2;
- unsigned long int __unused3;
- unsigned long int __unused4;
+ unsigned long int __glibc_reserved1;
+ unsigned long int __glibc_reserved2;
+ unsigned long int __glibc_reserved3;
+ unsigned long int __glibc_reserved4;
};
struct shm_info
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h
index 3e106477f3..c34cbca371 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h
+++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h
@@ -92,7 +92,7 @@ struct stat
__ST_TIME(a); /* Time of last access. */
__ST_TIME(m); /* Time of last modification. */
__ST_TIME(c); /* Time of last status change. */
- long __unused[3];
+ long __glibc_reserved[3];
};
#ifdef __USE_LARGEFILE64
@@ -113,7 +113,7 @@ struct stat64
__ST_TIME(a); /* Time of last access. */
__ST_TIME(m); /* Time of last modification. */
__ST_TIME(c); /* Time of last status change. */
- long __unused[3];
+ long __glibc_reserved[3];
};
#endif
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/configure b/ports/sysdeps/unix/sysv/linux/alpha/configure
index b5df524c1c..9afb5874cb 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/configure
+++ b/ports/sysdeps/unix/sysv/linux/alpha/configure
@@ -1,4 +1,4 @@
-# This file is generated from configure.in by Autoconf. DO NOT EDIT!
+# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
# Local configure fragment for sysdeps/unix/sysv/linux/alpha
# We did historically export the unwinder from glibc.
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/configure.in b/ports/sysdeps/unix/sysv/linux/alpha/configure.ac
index a8b6996657..a8b6996657 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/configure.in
+++ b/ports/sysdeps/unix/sysv/linux/alpha/configure.ac
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h b/ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h
index 94d358efc4..6708411407 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h
+++ b/ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h
@@ -40,7 +40,7 @@ struct kernel_stat64
unsigned long st_mtimensec;
unsigned long st_ctime;
unsigned long st_ctimensec;
- long __unused[3];
+ long __glibc_reserved[3];
};
/* Definition of `struct stat' used by glibc 2.0. */
@@ -82,7 +82,7 @@ struct glibc21_stat
unsigned int st_flags;
unsigned int st_gen;
int __pad3;
- long __unused[4];
+ long __glibc_reserved[4];
};
#define XSTAT_IS_XSTAT64 1
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S b/ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S
index d9629b9ec5..50b152d0cb 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S
+++ b/ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S
@@ -25,7 +25,7 @@
ldl a2, PID_OFFSET(v0); \
mov v0, a1; \
/* Write back its negation, to indicate that the pid value is \
- uninitialized in the the child, and in the window between \
+ uninitialized in the child, and in the window between \
here and the point at which we restore the value. */ \
negl a2, t0; \
stl t0, PID_OFFSET(v0);
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S b/ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S
index 1ca7678d1c..03aa37f43c 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S
+++ b/ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S
@@ -26,7 +26,7 @@
mov v0, a1; \
/* If the cached value is initialized (nonzero), then write \
back its negation, or INT_MIN, to indicate that the pid \
- value is uninitialized in the the child, and in the window \
+ value is uninitialized in the child, and in the window \
between here and the point at which we restore the value. */ \
ldah t0, -0x8000; \
negl a2, t1; \
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S b/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
index 3d291fd0b4..6efa7386d5 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
+++ b/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
@@ -83,14 +83,21 @@ PSEUDO_END(__syscall_rt_sigaction)
cfi_offset (64, \base + 2 * 8)
.endm
- .align 4
-
cfi_startproc
cfi_return_column (64)
.cfi_signal_frame
SIGCONTEXT_REGS -648
-
cfi_def_cfa_offset (648)
+
+ /* While this frame is marked as a signal frame, that only applies
+ to how this return address is handled for the outer frame.
+ The return address that arrived here, from the inner frame, is
+ not marked as a signal frame and so the unwinder still tries to
+ subtract 1 to examine the presumed call insn. Thus we must
+ extend the unwind info to a nop before the start. */
+ nop
+ .align 4
+
__syscall_sigreturn:
mov sp, a0
ldi v0, __NR_sigreturn
@@ -98,8 +105,11 @@ __syscall_sigreturn:
.size __syscall_sigreturn, .-__syscall_sigreturn
.type __syscall_sigreturn, @function
- .align 4
+ /* See above wrt including the nop. */
cfi_def_cfa_offset (176 + 648)
+ nop
+ .align 4
+
__syscall_rt_sigreturn:
mov sp,a0
ldi v0,__NR_rt_sigreturn
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c b/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c
index 79ec57840e..4e7e78b98f 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c
+++ b/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c
@@ -74,10 +74,10 @@ __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
buf->st_flags = kbuf->st_flags;
buf->st_gen = kbuf->st_gen;
buf->__pad3 = 0;
- buf->__unused[0] = 0;
- buf->__unused[1] = 0;
- buf->__unused[2] = 0;
- buf->__unused[3] = 0;
+ buf->__glibc_reserved[0] = 0;
+ buf->__glibc_reserved[1] = 0;
+ buf->__glibc_reserved[2] = 0;
+ buf->__glibc_reserved[3] = 0;
}
break;
@@ -105,9 +105,9 @@ __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
buf->st_ctime = kbuf->st_ctime;
buf->st_ctimensec = 0;
- buf->__unused[0] = 0;
- buf->__unused[1] = 0;
- buf->__unused[2] = 0;
+ buf->__glibc_reserved[0] = 0;
+ buf->__glibc_reserved[1] = 0;
+ buf->__glibc_reserved[2] = 0;
}
break;