diff options
| -rw-r--r-- | Documentation/zh_CN/arm64/tagged-pointers.txt | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Documentation/zh_CN/arm64/tagged-pointers.txt b/Documentation/zh_CN/arm64/tagged-pointers.txt new file mode 100644 index 000000000000..2664d1bd5a1c --- /dev/null +++ b/Documentation/zh_CN/arm64/tagged-pointers.txt | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | Chinese translated version of Documentation/arm64/tagged-pointers.txt | ||
| 2 | |||
| 3 | If you have any comment or update to the content, please contact the | ||
| 4 | original document maintainer directly. However, if you have a problem | ||
| 5 | communicating in English you can also ask the Chinese maintainer for | ||
| 6 | help. Contact the Chinese maintainer if this translation is outdated | ||
| 7 | or if there is a problem with the translation. | ||
| 8 | |||
| 9 | Maintainer: Will Deacon <will.deacon@arm.com> | ||
| 10 | Chinese maintainer: Fu Wei <wefu@redhat.com> | ||
| 11 | --------------------------------------------------------------------- | ||
| 12 | Documentation/arm64/tagged-pointers.txt 的中文翻译 | ||
| 13 | |||
| 14 | 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文 | ||
| 15 | 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻 | ||
| 16 | 译存在问题,请联系中文版维护者。 | ||
| 17 | |||
| 18 | 英文版维护者: Will Deacon <will.deacon@arm.com> | ||
| 19 | 中文版维护者: 傅炜 Fu Wei <wefu@redhat.com> | ||
| 20 | 中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com> | ||
| 21 | 中文版校译者: 傅炜 Fu Wei <wefu@redhat.com> | ||
| 22 | |||
| 23 | 以下为正文 | ||
| 24 | --------------------------------------------------------------------- | ||
| 25 | Linux 在 AArch64 中带标记的虚拟地址 | ||
| 26 | ================================= | ||
| 27 | |||
| 28 | 作者: Will Deacon <will.deacon@arm.com> | ||
| 29 | 日期: 2013 年 06 月 12 日 | ||
| 30 | |||
| 31 | 本文档简述了在 AArch64 地址转换系统中提供的带标记的虚拟地址及其在 | ||
| 32 | AArch64 Linux 中的潜在用途。 | ||
| 33 | |||
| 34 | 内核提供的地址转换表配置使通过 TTBR0 完成的虚拟地址转换(即用户空间 | ||
| 35 | 映射),其虚拟地址的最高 8 位(63:56)会被转换硬件所忽略。这种机制 | ||
| 36 | 让这些位可供应用程序自由使用,其注意事项如下: | ||
| 37 | |||
| 38 | (1) 内核要求所有传递到 EL1 的用户空间地址带有 0x00 标记。 | ||
| 39 | 这意味着任何携带用户空间虚拟地址的系统调用(syscall) | ||
| 40 | 参数 *必须* 在陷入内核前使它们的最高字节被清零。 | ||
| 41 | |||
| 42 | (2) 非零标记在传递信号时不被保存。这意味着在应用程序中利用了 | ||
| 43 | 标记的信号处理函数无法依赖 siginfo_t 的用户空间虚拟 | ||
| 44 | 地址所携带的包含其内部域信息的标记。此规则的一个例外是 | ||
| 45 | 当信号是在调试观察点的异常处理程序中产生的,此时标记的 | ||
| 46 | 信息将被保存。 | ||
| 47 | |||
| 48 | (3) 当使用带标记的指针时需特别留心,因为仅对两个虚拟地址 | ||
| 49 | 的高字节,C 编译器很可能无法判断它们是不同的。 | ||
| 50 | |||
| 51 | 此构架会阻止对带标记的 PC 指针的利用,因此在异常返回时,其高字节 | ||
| 52 | 将被设置成一个为 “55” 的扩展符。 | ||
