diff options
author | Jonathan Corbet <corbet@lwn.net> | 2023-06-12 15:06:39 +0300 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2023-06-21 17:51:51 +0300 |
commit | e4624435f38b34e7ce827070aa0f8b533a37c07e (patch) | |
tree | c25f8cf05a181c67d59d8e743b3dee7a83021747 /Documentation/arm64/tagged-pointers.rst | |
parent | f8c25662028b38f31f55f9c5d8da45a75dbf094a (diff) | |
download | linux-e4624435f38b34e7ce827070aa0f8b533a37c07e.tar.xz |
docs: arm64: Move arm64 documentation under Documentation/arch/
Architecture-specific documentation is being moved into Documentation/arch/
as a way of cleaning up the top-level documentation directory and making
the docs hierarchy more closely match the source hierarchy. Move
Documentation/arm64 into arch/ (along with the Chinese equvalent
translations) and fix up documentation references.
Cc: Will Deacon <will@kernel.org>
Cc: Alex Shi <alexs@kernel.org>
Cc: Hu Haowen <src.res@email.cn>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Yantengsi <siyanteng@loongson.cn>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'Documentation/arm64/tagged-pointers.rst')
-rw-r--r-- | Documentation/arm64/tagged-pointers.rst | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/Documentation/arm64/tagged-pointers.rst b/Documentation/arm64/tagged-pointers.rst deleted file mode 100644 index 19d284b70384..000000000000 --- a/Documentation/arm64/tagged-pointers.rst +++ /dev/null @@ -1,88 +0,0 @@ -========================================= -Tagged virtual addresses in AArch64 Linux -========================================= - -Author: Will Deacon <will.deacon@arm.com> - -Date : 12 June 2013 - -This document briefly describes the provision of tagged virtual -addresses in the AArch64 translation system and their potential uses -in AArch64 Linux. - -The kernel configures the translation tables so that translations made -via TTBR0 (i.e. userspace mappings) have the top byte (bits 63:56) of -the virtual address ignored by the translation hardware. This frees up -this byte for application use. - - -Passing tagged addresses to the kernel --------------------------------------- - -All interpretation of userspace memory addresses by the kernel assumes -an address tag of 0x00, unless the application enables the AArch64 -Tagged Address ABI explicitly -(Documentation/arm64/tagged-address-abi.rst). - -This includes, but is not limited to, addresses found in: - - - pointer arguments to system calls, including pointers in structures - passed to system calls, - - - the stack pointer (sp), e.g. when interpreting it to deliver a - signal, - - - the frame pointer (x29) and frame records, e.g. when interpreting - them to generate a backtrace or call graph. - -Using non-zero address tags in any of these locations when the -userspace application did not enable the AArch64 Tagged Address ABI may -result in an error code being returned, a (fatal) signal being raised, -or other modes of failure. - -For these reasons, when the AArch64 Tagged Address ABI is disabled, -passing non-zero address tags to the kernel via system calls is -forbidden, and using a non-zero address tag for sp is strongly -discouraged. - -Programs maintaining a frame pointer and frame records that use non-zero -address tags may suffer impaired or inaccurate debug and profiling -visibility. - - -Preserving tags ---------------- - -When delivering signals, non-zero tags are not preserved in -siginfo.si_addr unless the flag SA_EXPOSE_TAGBITS was set in -sigaction.sa_flags when the signal handler was installed. This means -that signal handlers in applications making use of tags cannot rely -on the tag information for user virtual addresses being maintained -in these fields unless the flag was set. - -Due to architecture limitations, bits 63:60 of the fault address -are not preserved in response to synchronous tag check faults -(SEGV_MTESERR) even if SA_EXPOSE_TAGBITS was set. Applications should -treat the values of these bits as undefined in order to accommodate -future architecture revisions which may preserve the bits. - -For signals raised in response to watchpoint debug exceptions, the -tag information will be preserved regardless of the SA_EXPOSE_TAGBITS -flag setting. - -Non-zero tags are never preserved in sigcontext.fault_address -regardless of the SA_EXPOSE_TAGBITS flag setting. - -The architecture prevents the use of a tagged PC, so the upper byte will -be set to a sign-extension of bit 55 on exception return. - -This behaviour is maintained when the AArch64 Tagged Address ABI is -enabled. - - -Other considerations --------------------- - -Special care should be taken when using tagged pointers, since it is -likely that C compilers will not hazard two virtual addresses differing -only in the upper byte. |