ERR011246 CortexM33- 937163C - 浮点状态可能在某些异常返回故障中被错误清除
Armv8-M架构在异常返回解栈之前定义了完整性检查。 这些检查验证EXC_RETURN值的有效性,如果失败则引发故障。由于此勘误,当发生其中一种故障时,浮点状态可能会被错误清除。
当满足以下所有条件时,浮点状态将被错误清除:
- 以下其中一种异常返回完整性检查失败: • SFSR.INVER. • UFSR.INVPC(退出非活动处理程序)。 • UFSR.INVPC(EXC_RETURN[1]!=0)。 • SFSR.LSERR(由于FPCCR.CLRONRET而尝试清除时)。
- 如果没有故障,浮点状态将被解栈(即 EXC_RETURN[4]==0,FPCCR.LSPACT==0,并且可以访问FPU)。
如果软件引起上述任何故障之一,浮点状态可能会被错误清除。可能存在问题的情况是Secure异常调用非安全函数,而非安全函数又尝试从异常返回。该勘误允许非安全函数清除Secure浮点上下文。请注意,这样做将始终引发Secure故障,并且永远不会将Secure状态泄漏给非安全环境。