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