一、什么是MTCR/MFCR
Move to Core Register :移动到核心寄存器指令
Move From Core Register :从核心寄存器指令移动
二、使用方式
MTCR:
MTCR仅在Supervisor模式下可用。
将数据寄存器D[a]中的值移动到由值const16选择的核心特殊函数寄存器(CSFR)。CSFR地址与CSFR基址相差16个字节。它必须是字对齐的(最不重要的两位为零)。未对齐的地址具有未定义的效果。
没有任何指令允许对CSFRs进行位、位域或负载-修改-存储访问。RSTV指令(重置溢出标志)只重置PSW中的溢出标志,而不修改任何其他PSW位。该指令可以在任何模式下执行(即User-1, User-0或Supervisor模式)。
CSFRs也被映射到内存地址空间。这种映射使得在地址映射中可以看到核心的完整架构状态,这允许高效的调试和模拟器支持。注意,不允许核心通过这种机制访问CSFRs。核心必须使用MFCR和MTCR。下图总结了访问csfr时TriCore的核心行为。
无法使用MTCR指令访问GPRs。尝试使用此指令更新GPR不会产生任何效果。
MTCR指令之后应该跟着ISSYNC指令。这确保了所有MTCR之后的指令都能看到CSFR更新的效果。
MFCR:
为了防止对CSFRs的未授权写入,MTCR指令只能在Supervisor模式下执行。MTCR指令之后应该跟着issync指令。这确保了所有MTCR之后的指令都能看到CSFR更新的效果。
将核心特殊函数寄存器(CSFR)的内容(由值const16选择)移动到数据寄存器D[c]。CSFR地址与CSFR基址相差16个字节。它必须是字对齐的(最低有效的两位等于零)。未对齐的地址具有未定义的效果。
MFCR可以在任何特权级别上执行。此指令不能用于访问GPRs。尝试使用此指令访问GPR将返回一个未定义的值。