lkml.org 
[lkml]   [2017]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 04/20] arm64: ilp32: add documentation on the ILP32 ABI for ARM64
    Date
    Based on Andrew Pinski's patch-series.

    Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
    ---
    Documentation/arm64/ilp32.txt | 45 +++++++++++++++++++++++++++++++++++++++++++
    1 file changed, 45 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..08935a3
    --- /dev/null
    +++ b/Documentation/arm64/ilp32.txt
    @@ -0,0 +1,45 @@
    +ILP32 AARCH64 SYSCALL ABI
    +=========================
    +
    +This document describes the ILP32 syscall ABI and where it differs
    +from the generic compat linux syscall interface.
    +
    +AARCH64/ILP32 userspace can pass garbage in the top halve of w0-w7 registers
    +(syscall arguments). So top 32 bits are zeroed for them.
    +
    +Comparing to AARCH32, AARCH64/ILP32 has 64-bit length of following types:
    +ino_t is u64 type.
    +off_t is s64 type.
    +blkcnt_t is s64 type.
    +fsblkcnt_t is u64 type.
    +fsfilcnt_t is u64 type.
    +rlim_t is u64 type.
    +
    +AARCH64/ILP32 ABI uses standard syscall table which can be found at
    +include/uapi/asm-generic/unistd.h, with the exceptions listed below.
    +
    +Syscalls which pass 64-bit values are handled by the code shared from
    +AARCH32 and pass that value as a pair. Next syscalls are affected:
    +fadvise64_64()
    +fallocate()
    +ftruncate64()
    +pread64()
    +pwrite64()
    +readahead()
    +sync_file_range()
    +truncate64()
    +
    +ptrace() syscall is handled by compat version.
    +
    +shmat() syscall is handled by non-compat handler as aarch64/ilp32 has no
    +limitation on 4-pages alignement for shared memory.
    +
    +statfs() and fstatfs() take the size of struct statfs as an argument.
    +It is calculated differently in kernel and user spaces. So AARCH32 handlers
    +are taken to handle it.
    +
    +struct rt_sigframe is redefined and contains struct compat_siginfo,
    +as compat syscalls expects, and struct ilp32_sigframe, to handle
    +AARCH64 register set and 32-bit userspace register representation.
    +
    +elf_gregset_t is taken from lp64 to handle registers properly.
    --
    2.7.4
    \
     
     \ /
      Last update: 2017-03-01 23:01    [W:2.268 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site