1. Allow emulation of old arm7500 binaries and hardware execution of new vfp binaries in the same kernel. 2. Support VFPv2 as well as VFPv3 (so code can be shared by armv6 kernels). 3. Fix some kernel panics caused by confusion over vfp enabled/disabled state. 4. Safely preserve fpu condition codes across process context switches. 5. Don't enable interrupts during vfp exception handling (to prevent race condition if clock interrupt calls sched which causes fp context saving). Interrupts are still enabled for emulation of arm7500 code (safe because all fp context is already in the Proc structure).