While trying to get a v3.5 kernel booted on the cubox, I noticed thatVFP does not work correctly with VFP bounce handling. This is becauseof the confusion over 16-bit vs 32-bit instructions, and where PC issupposed to point to.

The rule is that FP handlers are entered with regs->ARM_pc pointing atthe _next_ instruction to be executed. However, if the exception isnot handled, regs->ARM_pc points at the faulting instruction.

This is easy for ARM mode, because we know that the next instruction andprevious instructions are separated by four bytes. This is not true ofThumb2 though.

Since all FP instructions are 32-bit in Thumb2, it makes things easy.We just need to select the appropriate adjustment. Do this by movingthe adjustment out of do_undefinstr() into the assembly code, as onlythe assembly code knows whether it's dealing with a 32-bit or 16-bitinstruction.