Jeffrey Lee
authored
Detail: Initial VFP/NEON support code for RISC OS. Features: * Basic detection code for determining VFP version. Should work OK on all architecture versions. * Provides code to perform VFP/NEON context switches * Context switches can be lazy or immediate * Context register dumps can be stored in user-allocated memory or memory allocated by VFPSupport * Basic APIs for examining contexts and reporting available hardware features * "FastAPI" that privileged code can use for context switching in order to avoid SWI call overheads Missing/unfinished features: * No VFP exception handler is present, so the module will refuse to run on anything but a VFPv3 system * Lazy context switching is simplistic, opting to activate the new context upon the first undefined instruction abort instead of checking to see if it was a VFP instruction that triggered the abort * No interface to allow debuggers to easily get their hands on a register dump following a crash * No code to automatically clean up contexts left behind by dying programs * Can't be used by FIQ handlers, or from code called by an FIQ handler * Currently uses an error base of 0! Other notes: * Doc/vfpversions contains some random notes about the different VFP/NEON versions * Test/test1,ffb is a BASIC program that tests most of the module's functionality Admin: Tested on Iyonix & Beagleboard. Iyonix version exits correctly, while Beagleboard version passes all tests in the test1 script. Need to sort out proper error numbers, and translate the error messages. Version 0.01. Not tagged