思考:
REE刷TLB时会把安全的TLB刷掉吗?
TEE刷TLB时能否刷安全的TLB?例如页表管理着的共享内存,它的翻译缓存到了TLB.
首先,纠正一下用词,这里的"刷",来自某些操作系统中的"flush",在TLB底层的操作指令中,是没有flush或clean的,关于TLB的操作指令指令只有一类,那就是invalidate。 博文在以下的描述中,可能会invalidate/刷交替使用。
接着我们再衍生几个讨论,在EL1是否能invalidate all TLB,或是否能invalidate EL3 TLB ?
答案,当然是不能的,因为你仔细看看TLBI的每一条指令,是没有ALL(EL1/EL2/EL3)的,当然每一条指令都跟上了一个Exception Levle范围的。
所以总结一下就是:PE在EL1时可以刷EL1的TLB,但不可以刷EL2/3的TLB,而PE在EL3时可以刷EL3/2/1的TLB
那么在EL3时,是如何刷S-EL1的TLB,如何刷NS-EL1的TLB呢?
回答是,你使用的指令,要跟上EL1的限定,如TLBI xxxxE1
,然后记得切换SCR_EL3.NS
比特来决定刷的S还是NS的TLB
接下来,重点来了,REE刷TLB时会把安全的TLB刷掉吗?
答案:当然不会ÿ