aboutsummaryrefslogtreecommitdiff
path: root/meta-linaro-integration/recipes-overlayed/linux-libc-headers/linux-libc-headers/0024-Add-documentation-about-ARM64-ILP32-ABI.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-linaro-integration/recipes-overlayed/linux-libc-headers/linux-libc-headers/0024-Add-documentation-about-ARM64-ILP32-ABI.patch')
-rw-r--r--meta-linaro-integration/recipes-overlayed/linux-libc-headers/linux-libc-headers/0024-Add-documentation-about-ARM64-ILP32-ABI.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/meta-linaro-integration/recipes-overlayed/linux-libc-headers/linux-libc-headers/0024-Add-documentation-about-ARM64-ILP32-ABI.patch b/meta-linaro-integration/recipes-overlayed/linux-libc-headers/linux-libc-headers/0024-Add-documentation-about-ARM64-ILP32-ABI.patch
new file mode 100644
index 00000000..3e3ebe9a
--- /dev/null
+++ b/meta-linaro-integration/recipes-overlayed/linux-libc-headers/linux-libc-headers/0024-Add-documentation-about-ARM64-ILP32-ABI.patch
@@ -0,0 +1,79 @@
+From 912465ff3a6c600fbd9315533cf8d4ec8c570b63 Mon Sep 17 00:00:00 2001
+From: Andrew Pinski <apinski@cavium.com>
+Date: Wed, 3 Sep 2014 14:19:18 -0700
+Subject: [PATCH 24/25] Add documentation about ARM64 ILP32 ABI
+
+This adds the documentation about the ILP32 ABI and what is difference between it and the normal generic 32bit ABI.
+
+Signed-off-by: Andrew Pinski <apinski@cavium.com>
+---
+ Documentation/arm64/ilp32.txt | 57 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 57 insertions(+)
+ create mode 100644 Documentation/arm64/ilp32.txt
+
+diff --git a/Documentation/arm64/ilp32.txt b/Documentation/arm64/ilp32.txt
+new file mode 100644
+index 0000000..0863aa4
+--- /dev/null
++++ b/Documentation/arm64/ilp32.txt
+@@ -0,0 +1,57 @@
++ ILP32 AARCH64 SYSCALL ABI
++ =====================
++
++Author: Andrew Pinski <apinski@cavium.com>
++Date: May 23, 2014
++
++This document describes the ILP32 syscall ABI and where it differs
++from the generic linux syscall interface.
++ILP32 sets __kernel_long_t and __kernel_ulong_t both to 64bit
++(long long). This effects the following types:
++* time_t: unsigned long long
++* clock_t: unsigned long long
++* fsword_t: long long
++* suseconds_t: long long
++* swblk_t: long long
++* fd_mask_t: long long
++
++Some structures are changed to reduce the difference in the code path
++for both ILP32 and LP64 ABIs for signal handling.
++
++The following structures have been changed so the layout of the structures are the same between ILP32 and LP64 ABIs.
++* timespec: Uses time_t and suseconds_t
++* timeval: Uses time_t and suseconds_t
++* stat: Uses timespec/time_t.
++* semid64_ds: Uses time_t.
++* msqid64_ds: Uses time_t.
++* shmid64_ds: Uses time_t.
++* rt_sigframe: Uses siginfo and ucontext.
++* siginfo_t: Uses clock_t and sigval_t
++* ucontext: Uses stack_t and sigset_t
++* stack_t: NOTE special handling inside the kernel is done to make sure
++ the pointers are zero extended
++* sigval_t: Contains pointers
++* sigevent: Uses sigval_t which causes it to be the same. Special
++ handing is needed for reading; in the mq_notify syscall
++* sigaction: NOTE the userland structure inside glibc does
++ not match the kernel structure here (this causes issues with LTP).
++ Uses sigset_t.
++* fd_set: This is done to avoid endian issues between ILP32 and LP64
++ Also the syscall which uses fd_set uses timespec
++
++
++Also the syscalls which normally would pass 64bit values as two
++arguments; now pass the 64bit value as one argument. Also they have
++been renamed (removing the 64 from the name) to avoid confusion.
++The list of these syscalls:
++* fcntl
++* statfs
++* fstatfs
++* truncate
++* ftruncate
++* lseek
++* sendfile
++* newfstatat
++* fstat
++* mmap
++* fadvise64
+--
+1.9.3
+