diff options
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.patch | 79 |
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 + |