diff options
| author | Will Deacon <will.deacon@arm.com> | 2013-09-17 06:46:23 -0400 |
|---|---|---|
| committer | Catalin Marinas <catalin.marinas@arm.com> | 2013-09-20 04:56:06 -0400 |
| commit | 374ed9d18e658704235b84a60589888ca52ab0fe (patch) | |
| tree | fe87e717b8ccf75eb57fd693786f6fab21413cf9 | |
| parent | 59f67e16e6b79697241c3fd030e3da300377893e (diff) | |
arm64: documentation: tighten up tagged pointer documentation
Commit d50240a5f6ce ("arm64: mm: permit use of tagged pointers at EL0")
added support for tagged pointers in userspace, but the corresponding
update to Documentation/ contained some imprecise statements.
This patch fixes up some minor ambiguities in the text, hopefully making
it more clear about exactly what the kernel expects from user virtual
addresses.
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
| -rw-r--r-- | Documentation/arm64/tagged-pointers.txt | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/Documentation/arm64/tagged-pointers.txt b/Documentation/arm64/tagged-pointers.txt index 264e9841563a..d9995f1f51b3 100644 --- a/Documentation/arm64/tagged-pointers.txt +++ b/Documentation/arm64/tagged-pointers.txt | |||
| @@ -18,17 +18,17 @@ this byte for application use, with the following caveats: | |||
| 18 | parameters containing user virtual addresses *must* have | 18 | parameters containing user virtual addresses *must* have |
| 19 | their top byte cleared before trapping to the kernel. | 19 | their top byte cleared before trapping to the kernel. |
| 20 | 20 | ||
| 21 | (2) Tags are not guaranteed to be preserved when delivering | 21 | (2) Non-zero tags are not preserved when delivering signals. |
| 22 | signals. This means that signal handlers in applications | 22 | This means that signal handlers in applications making use |
| 23 | making use of tags cannot rely on the tag information for | 23 | of tags cannot rely on the tag information for user virtual |
| 24 | user virtual addresses being maintained for fields inside | 24 | addresses being maintained for fields inside siginfo_t. |
| 25 | siginfo_t. One exception to this rule is for signals raised | 25 | One exception to this rule is for signals raised in response |
| 26 | in response to debug exceptions, where the tag information | 26 | to watchpoint debug exceptions, where the tag information |
| 27 | will be preserved. | 27 | will be preserved. |
| 28 | 28 | ||
| 29 | (3) Special care should be taken when using tagged pointers, | 29 | (3) Special care should be taken when using tagged pointers, |
| 30 | since it is likely that C compilers will not hazard two | 30 | since it is likely that C compilers will not hazard two |
| 31 | addresses differing only in the upper bits. | 31 | virtual addresses differing only in the upper byte. |
| 32 | 32 | ||
| 33 | The architecture prevents the use of a tagged PC, so the upper byte will | 33 | The architecture prevents the use of a tagged PC, so the upper byte will |
| 34 | be set to a sign-extension of bit 55 on exception return. | 34 | be set to a sign-extension of bit 55 on exception return. |
