Debugging 在arm7上启用浮点异常时,fpscr寄存器不会更新,不会生成SIGFPE

Debugging 在arm7上启用浮点异常时,fpscr寄存器不会更新,不会生成SIGFPE,debugging,android-ndk,floating-point,arm,Debugging,Android Ndk,Floating Point,Arm,fpscr寄存器未更新,且未生成SIGFPE。这是在NVidia Shield平板电脑和第一代Nexus 7上测试的 feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); 实现调用代码,最终执行此程序集: asm _volatile__("vmsr fpscr,%0" : :"ri" (fpscr)); ; disassembly follows ldr r3, [r11, #-8] vmsr fpscr, r3

fpscr寄存器未更新,且未生成SIGFPE。这是在NVidia Shield平板电脑和第一代Nexus 7上测试的

feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
实现调用代码,最终执行此程序集:

  asm _volatile__("vmsr fpscr,%0" : :"ri" (fpscr));
  ; disassembly follows
  ldr r3, [r11, #-8] 
  vmsr fpscr, r3
vmsr fpscr
不更新。当应更新为0x20000710时,它仍为0x2000010

使用
-mfloat abi=soft
-mfloat abi=softfp
进行测试


我能得出什么结论?

ARM对FPSCR中的所有异常捕获位都有这样的说法:

[……]。仅当实现支持捕获浮点异常时,此位才为RW。在不支持浮点异常捕获的实现中,此位为RES0

SHIELD平板电脑中的Tegra K1 SoC具有Cortex-A15 CPU,其

原始Nexus7中的Tegra3SOC具有Cortex-A9CPU(采用VFP+NEON实现),其

特别没有帮助的是,从用户空间中,您甚至无法访问MVFR0功能寄存器,以编程方式找到这一点

我认为您只能得出结论,您没有任何支持捕获异常的硬件;)