About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / zh_CN / arm64 / tagged-pointers.txt


Based on kernel version 4.9. Page generated on 2016-12-21 14:37 EST.

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” 的扩展符。
Hide Line Numbers


About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog