My integer-only, bare-metal C project just ground to a halt when I got an unexpected exception about a floating point instruction.
Looking at the gcc generated code, the culprit is an fmov d0, x0
, used to temporarily store a value in a floating point register, rather than on the stack.
I don't want it to do that!
I could mark a function or two with the noinline
attribute, but that's no guarantee that the problem won't occur again elsewhere.