系统寄存器¶
系统寄存器统称为SSR-System Status Register,是软件的接口,用于读取或写入灵犀核的配置或体系结构状态。
软件需要保证系统寄存器访问的顺序,适当场景需要增加ISB指令。
SSR可以带有边际效应,触发灵犀核内部的特殊行为,也可以简单用于数据读写,用作灵犀核特定功能的参数,还可以简单用作GPR的补充。
系统寄存器通过SSRGET和SSRSET以及HL.SSRGET和HL.SSRSET等指令访问。
编址空间¶
系统寄存器通过一个24位的ID进行编址,每个地址指向一个8到128位的内容。除非特别指明,否则默认的寄存器宽度都是64位。当前版本仅使用16位范围内的编址。
16位的编址空间以256个为一段分配给不同的功能,当前分配如下:
| 地址范围 | 空间分配 | 说明 |
|---|---|---|
| 0x0000-0x00FF | 通用空间 | 用于所有ACR通用的系统寄存器空间 |
| 0x0800-0x08FF | 轻核自定义空间 | 用于轻核子系统自定义的系统寄存器空间 |
| 0x0F00-0x0FFF | 根优先级空间 | 用于ACR0定义的系统寄存器空间 |
| 0x1F00-0x1FFF | 主系统优先级空间 | 用于ACR1定义的系统寄存器空间 |
| 0x2F00-0x2FFF | 主系统用户优先级空间 | 用于ACR2定义的系统寄存器空间 |
| 0xnF00-0xnFFF | 其他优先级空间(n=3, 4, ..., F) | 用于ACR3-ACRf定义的系统寄存器空间 |

访问规则¶
每个SSR必须被作为一个整体访问。访问中,无论其中的内容是否被修改,SSR的每个域都被认为被访问到了。
SSR本身或者内部的每个域可以定义为:
- 可读写的(RW)
- 只读的(RO)
- 只写的(WO)
- 保留的(RSV)
访问没有访问权限的SSR可能会触发非法SSR异常,也可能会读到非预期的数据。
对SSR写入无效的参数,行为可能各异,请参考对应SSR的详细说明。