ERR011246 CortexM33- 937163C - 浮點狀態(tài)可能在某些異常返回故障中被錯誤清除
Armv8-M架構(gòu)在異常返回解棧之前定義了完整性檢查。 這些檢查驗證EXC_RETURN值的有效性,如果失敗則引發(fā)故障。由于此勘誤,當發(fā)生其中一種故障時,浮點狀態(tài)可能會被錯誤清除。
當滿足以下所有條件時,浮點狀態(tài)將被錯誤清除:
- 以下其中一種異常返回完整性檢查失敗: ? SFSR.INVER. ? UFSR.INVPC(退出非活動處理程序)。 ? UFSR.INVPC(EXC_RETURN[1]!=0)。 ? SFSR.LSERR(由于FPCCR.CLRONRET而嘗試清除時)。
- 如果沒有故障,浮點狀態(tài)將被解棧(即 EXC_RETURN[4]==0,F(xiàn)PCCR.LSPACT==0,并且可以訪問FPU)。
如果軟件引起上述任何故障之一,浮點狀態(tài)可能會被錯誤清除??赡艽嬖趩栴}的情況是Secure異常調(diào)用非安全函數(shù),而非安全函數(shù)又嘗試從異常返回。該勘誤允許非安全函數(shù)清除Secure浮點上下文。請注意,這樣做將始終引發(fā)Secure故障,并且永遠不會將Secure狀態(tài)泄漏給非安全環(huán)境。