Chinese translated version of Documentation/arm64/legacy_instructions.txt

If you have any comment or update to the content, please contact the
original document maintainer directly.  However, if you have a problem
communicating in English you can also ask the Chinese maintainer for
help.  Contact the Chinese maintainer if this translation is outdated
or if there is a problem with the translation.

Maintainer: Punit Agrawal <punit.agrawal@arm.com>
            Suzuki K. Poulose <suzuki.poulose@arm.com>
Chinese maintainer: Fu Wei <wefu@redhat.com>
---------------------------------------------------------------------
Documentation/arm64/legacy_instructions.txt 的中文翻译

如果想评论或更新本文的内容，请直接联系原文档的维护者。如果你使用英文
交流有困难的话，也可以向中文版维护者求助。如果本翻译更新不及时或者翻
译存在问题，请联系中文版维护者。

本文翻译提交时的 Git 检出点为： bc465aa9d045feb0e13b4a8f32cc33c1943f62d6

英文版维护者： Punit Agrawal <punit.agrawal@arm.com>
            Suzuki K. Poulose <suzuki.poulose@arm.com>
中文版维护者： 傅炜  Fu Wei <wefu@redhat.com>
中文版翻译者： 傅炜  Fu Wei <wefu@redhat.com>
中文版校译者： 傅炜  Fu Wei <wefu@redhat.com>

以下为正文
---------------------------------------------------------------------
Linux 内核在 arm64 上的移植提供了一个基础框架，以支持构架中正在被淘汰或已废弃指令的模拟执行。
这个基础框架的代码使用未定义指令钩子（hooks）来支持模拟。如果指令存在，它也允许在硬件中启用该指令。

模拟模式可通过写 sysctl 节点（/proc/sys/abi）来控制。
不同的执行方式及 sysctl 节点的相应值，解释如下：

* Undef（未定义）
  值： 0
  产生未定义指令终止异常。它是那些构架中已废弃的指令，如 SWP，的默认处理方式。

* Emulate（模拟）
  值： 1
  使用软件模拟方式。为解决软件迁移问题，这种模拟指令模式的使用是被跟踪的，并会发出速率限制警告。
  它是那些构架中正在被淘汰的指令，如 CP15 barriers（隔离指令），的默认处理方式。

* Hardware Execution（硬件执行）
  值： 2
  虽然标记为正在被淘汰，但一些实现可能提供硬件执行这些指令的使能/禁用操作。
  使用硬件执行一般会有更好的性能，但将无法收集运行时对正被淘汰指令的使用统计数据。

默认执行模式依赖于指令在构架中状态。正在被淘汰的指令应该以模拟（Emulate）作为默认模式，
而已废弃的指令必须默认使用未定义（Undef）模式

注意：指令模拟可能无法应对所有情况。更多详情请参考单独的指令注释。

受支持的遗留指令
-------------
* SWP{B}
节点: /proc/sys/abi/swp
状态: 已废弃
默认执行方式: Undef (0)

* CP15 Barriers
节点: /proc/sys/abi/cp15_barrier
状态: 正被淘汰，不推荐使用
默认执行方式: Emulate (1)

* SETEND
节点: /proc/sys/abi/setend
状态: 正被淘汰，不推荐使用
默认执行方式: Emulate (1)*
注：为了使能这个特性，系统中的所有 CPU 必须在 EL0 支持混合字节序。
如果一个新的 CPU （不支持混合字节序） 在使能这个特性后被热插入系统，
在应用中可能会出现不可预期的结果。
