riscv的hartid仅仅支持hartid从M mode获取,而optee-os需要在supervisor mode下获取hartid一个方式通过是ecall到M mode获取返回hartid,这种方式无形之中会消耗性能。可以从以下方面考虑获取:
1.在opensbi切换上下文(REE侧linux,TEE 侧optee-os)时,使用一个optee-os未使用supervisor mode csr来存放hartid,如tp寄存器。
2.实现每cpu变量,在多核启动时初始化每cpu变量,每cpu变量中存放hartid?
3.cpu硬件上增加一个寄存器shartid为mhartid的镜像,允许只读。