https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106763
--- Comment #8 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- I spoke to our kernel experts about this and they think my hypothesis is quite likely to be correct. They also noted that kernel version 4.9.118 is about 200 releases out of date on the 4.9 LTS series. But more importantly, they say that trying to run a 32-bit kernel on 64-bit Arm v8 hardware is not recommended and that you should seriously consider switching to a 64-bit kernel (which can still run a 32-bit userland if you need it to). I do note that the code here: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/kernel/entry-armv.S#n628 does not have an entry for CP#9, which would be needed for FP16 support as all FP16 instructions are in that part of the encoding space. I have no idea if changing that would be enough.