跳转至

系统寄存器

系统寄存器统称为SSR-System Status Register,是软件的接口,用于读取或写入灵犀核的配置或体系结构状态。

软件需要保证系统寄存器访问的顺序,适当场景需要增加ISB指令。

SSR可以带有边际效应,触发灵犀核内部的特殊行为,也可以简单用于数据读写,用作灵犀核特定功能的参数,还可以简单用作GPR的补充。

系统寄存器通过SSRGETSSRSET以及HL.SSRGETHL.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的每个域都被认为被访问到了。

SSR本身或者内部的每个域可以定义为:

  • 可读写的(RW)
  • 只读的(RO)
  • 只写的(WO)
  • 保留的(RSV)

访问没有访问权限的SSR可能会触发非法SSR异常,也可能会读到非预期的数据。

对SSR写入无效的参数,行为可能各异,请参考对应SSR的详细说明。