SYSTEM 指令类包括用于管理系统资源的指令。
SYSTEM/GUEST 指令子类包括访客模式的指令。
这些指令在客户控制和通用寄存器文件之间移动寄存器。
下图显示了访客控制寄存器及其寄存器字段编码。
寄存器可以作为单个或对齐的 64 位对移动。
Class: SYSTEM (slot 3)
注意
这是访客级别的功能。 如果在用户模式下执行,则会发生权限错误异常。
编码
SYSTEM/MONITOR 指令子类包括监控模式的指令。
寄存器 Rs 指定一个 32 位的掩码,其中位 0 对应最高优先级的中断 0,寄存器位 31 指的是最低优先级的中断 31。
对于 Rs 中设置的位,IAD 中的相应位被清除。 这将重新启用中断。
对于 Rs 中清零的位,IAD 中的相应位不受影响。
Class: SYSTEM (slot 3)
注意
编码
CRSWAP 将通用寄存器的内容与主管通用指针寄存器之一(SGP0 或 SGP1)交换。
例如,这些寄存器可用于保存管理程序或异常堆栈指针,或其他用于快速异常处理的通用指针。 存在一对交换形式,用于将两个 SGP 寄存器与一对对齐的通用寄存器交换。
Class: SYSTEM (slot 3)
注意
编码
寄存器 Rs 指定一个 32 位的掩码,其中位 0 对应最高优先级的中断 0,寄存器位 31 指的是最低优先级的中断 31。
CSWI 通过清除 IPEND 寄存器中的中断来取消掩码中指示的任何未决中断。
Class: SYSTEM (slot 3)
注意
编码
DCKILL 使数据缓存的全部内容无效。 上电时,不保证缓存包含有效数据。
该指令应用于建立初始的干净缓存状态。 执行 DCKILL 时,数据缓存中所有尚未写回内存的脏数据都会丢失。 如果要保存数据,则应在执行 DCKILL 之前使用 DCLEAN 指令将其清除。
由于高速缓存在所有线程之间共享,因此必须仅在确保没有其他线程正在使用高速缓存时才执行该指令。 最好的选择是在只有一个线程上电而其他线程断电时使用该指令。
Class: SYSTEM (slot 0)
注意
对数据缓存执行维护操作。
DCCLEANINVIDX 查看数据缓存中的索引 Rs。 如果此行有脏数据,则将数据刷新到内存中。 该行无效。 该集合在 Rs[11:5] 中提供,路径在 Rs[2:0] 中提供。 该指令只能与 X 型或 A 型指令组合。
DCCLEANIDX 查看数据缓存中的索引 Rs。 如果此行有脏数据,则将数据刷新到内存中。 该集合在 Rs[11:5] 中提供,路径在 Rs[2:0] 中提供。 该指令只能与 X 型或 A 型指令组合。
DCINVIDX 使索引 Rs 处的行无效。 该集合在 Rs[11:5] 中提供,路径在 Rs[2:0] 中提供。 该指令只能与 X 型或 A 型指令组合。
DCTAGR 读取 Rs 指示的标签并将数据返回到 Rd。 集合提供Rs[11:5],路提供Rs[2:0]。 标签在 Rd[23:0] 中返回,状态在 Rd[30:29] 中返回。 该指令只能与 X 型或 A 型指令组合。
DCTAGW 使用寄存器 Rs 和 Rt。 寄存器 Rs 包含 [11:5] 中的集合和 [2:0] 中的路,而 Rt 值包含 [23:0] 中的标签和 [30:29] 中的状态。 DCTAGW 指令仅是单线程的。 所有其他线程必须处于停止或调试模式,没有未完成的事务。 该指令为 SOLO 指令,不得与其他指令一起出现在数据包中。
状态位编码如下:
00 = Invalid
01 = Valid & Clean
10 = Reserved
11 = Valid &Clean
Class: SYSTEM (slot 0)
注意