ARM: add support for kernel mode NEON

ARM: be strict about FP exceptions in kernel mode

      The support code in vfp_support_entry does not care whether the
      exception that caused it to be invoked occurred in kernel mode or
      in user mode. However, neither condition that could trigger this
      exception (lazy restore and VFP bounce to support code) is
      currently allowable in kernel mode.

      In either case, print a message describing the condition before
      letting the undefined instruction handler run its course and trigger
      an oops.

      Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Acked-by: Nicolas Pitre <nico@linaro.org>

ARM: add support for kernel mode NEON

      In order to safely support the use of NEON instructions in
      kernel mode, some precautions need to be taken:
      - the userland context that may be present in the registers (even
	if the NEON/VFP is currently disabled) must be stored under the
	correct task (which may not be 'current' in the UP case),
      - to avoid having to keep track of additional vfpstates for the
	kernel side, disallow the use of NEON in interrupt context
	and run with preemption disabled,
      - after use, re-enable preemption and re-enable the lazy restore
	machinery by disabling the NEON/VFP unit.

      This patch adds the functions kernel_neon_begin() and
      kernel_neon_end() which take care of the above. It also adds
      the Kconfig symbol KERNEL_MODE_NEON to enable it.

      Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Acked-by: Nicolas Pitre <nico@linaro.org>