提交 3d3752e5 编写于 作者: B bernard 提交者: Gitee

!175 优化cortex-a 未定义异常时自动开启FPU的判断条件

Merge pull request !175 from 井底的蛙/gitee_master
......@@ -47,30 +47,24 @@ void rt_hw_trap_undef(struct rt_hw_exp_stack *regs)
{
#ifdef RT_USING_FPU
{
uint32_t ins;
uint32_t val;
uint32_t addr;
if (regs->cpsr & (1 << 5))
{
/* thumb mode */
addr = regs->pc - 2;
ins = (uint32_t)*(uint16_t*)addr;
if ((ins & (3 << 11)) != 0)
{
/* 32 bit ins */
ins <<= 16;
ins += *(uint16_t*)(addr + 2);
}
}
else
{
addr = regs->pc - 4;
ins = *(uint32_t*)addr;
}
if ((ins & 0xe00) == 0xa00)
asm volatile ("vmrs %0, fpexc" : "=r"(val)::"memory");
if (!(val & 0x40000000))
{
/* float ins */
uint32_t val = (1U << 30);
val = (1U << 30);
asm volatile ("vmsr fpexc, %0"::"r"(val):"memory");
regs->pc = addr;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册