REE刷TLB时会把安全的TLB刷掉吗

思考:
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

REE刷TLB时会把安全的TLB刷掉吗_第1张图片

那么在EL3时,是如何刷S-EL1的TLB,如何刷NS-EL1的TLB呢?
回答是,你使用的指令,要跟上EL1的限定,如TLBI xxxxE1,然后记得切换SCR_EL3.NS比特来决定刷的S还是NS的TLB

接下来,重点来了,REE刷TLB时会把安全的TLB刷掉吗?
答案:当然不会ÿ

你可能感兴趣的:(ARM-TEE-Android,Trustzone,TLB,安全)