162306a36Sopenharmony_ciIntroduction 262306a36Sopenharmony_ci============ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ciThis directory contains the version 0.92 test release of the NetWinder 562306a36Sopenharmony_ciFloating Point Emulator. 662306a36Sopenharmony_ci 762306a36Sopenharmony_ciThe majority of the code was written by me, Scott Bambrough It is 862306a36Sopenharmony_ciwritten in C, with a small number of routines in inline assembler 962306a36Sopenharmony_ciwhere required. It was written quickly, with a goal of implementing a 1062306a36Sopenharmony_ciworking version of all the floating point instructions the compiler 1162306a36Sopenharmony_ciemits as the first target. I have attempted to be as optimal as 1262306a36Sopenharmony_cipossible, but there remains much room for improvement. 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ciI have attempted to make the emulator as portable as possible. One of 1562306a36Sopenharmony_cithe problems is with leading underscores on kernel symbols. Elf 1662306a36Sopenharmony_cikernels have no leading underscores, a.out compiled kernels do. I 1762306a36Sopenharmony_cihave attempted to use the C_SYMBOL_NAME macro wherever this may be 1862306a36Sopenharmony_ciimportant. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciAnother choice I made was in the file structure. I have attempted to 2162306a36Sopenharmony_cicontain all operating system specific code in one module (fpmodule.*). 2262306a36Sopenharmony_ciAll the other files contain emulator specific code. This should allow 2362306a36Sopenharmony_ciothers to port the emulator to NetBSD for instance relatively easily. 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ciThe floating point operations are based on SoftFloat Release 2, by 2662306a36Sopenharmony_ciJohn Hauser. SoftFloat is a software implementation of floating-point 2762306a36Sopenharmony_cithat conforms to the IEC/IEEE Standard for Binary Floating-point 2862306a36Sopenharmony_ciArithmetic. As many as four formats are supported: single precision, 2962306a36Sopenharmony_cidouble precision, extended double precision, and quadruple precision. 3062306a36Sopenharmony_ciAll operations required by the standard are implemented, except for 3162306a36Sopenharmony_ciconversions to and from decimal. We use only the single precision, 3262306a36Sopenharmony_cidouble precision and extended double precision formats. The port of 3362306a36Sopenharmony_ciSoftFloat to the ARM was done by Phil Blundell, based on an earlier 3462306a36Sopenharmony_ciport of SoftFloat version 1 by Neil Carson for NetBSD/arm32. 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ciThe file README.FPE contains a description of what has been implemented 3762306a36Sopenharmony_ciso far in the emulator. The file TODO contains a information on what 3862306a36Sopenharmony_ciremains to be done, and other ideas for the emulator. 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ciBug reports, comments, suggestions should be directed to me at 4162306a36Sopenharmony_ci<scottb@netwinder.org>. General reports of "this program doesn't 4262306a36Sopenharmony_ciwork correctly when your emulator is installed" are useful for 4362306a36Sopenharmony_cidetermining that bugs still exist; but are virtually useless when 4462306a36Sopenharmony_ciattempting to isolate the problem. Please report them, but don't 4562306a36Sopenharmony_ciexpect quick action. Bugs still exist. The problem remains in isolating 4662306a36Sopenharmony_ciwhich instruction contains the bug. Small programs illustrating a specific 4762306a36Sopenharmony_ciproblem are a godsend. 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ciLegal Notices 5062306a36Sopenharmony_ci------------- 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ciThe NetWinder Floating Point Emulator is free software. Everything Rebel.com 5362306a36Sopenharmony_cihas written is provided under the GNU GPL. See the file COPYING for copying 5462306a36Sopenharmony_ciconditions. Excluded from the above is the SoftFloat code. John Hauser's 5562306a36Sopenharmony_cilegal notice for SoftFloat is included below. 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci------------------------------------------------------------------------------- 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ciSoftFloat Legal Notice 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ciSoftFloat was written by John R. Hauser. This work was made possible in 6262306a36Sopenharmony_cipart by the International Computer Science Institute, located at Suite 600, 6362306a36Sopenharmony_ci1947 Center Street, Berkeley, California 94704. Funding was partially 6462306a36Sopenharmony_ciprovided by the National Science Foundation under grant MIP-9311980. The 6562306a36Sopenharmony_cioriginal version of this code was written as part of a project to build 6662306a36Sopenharmony_cia fixed-point vector processor in collaboration with the University of 6762306a36Sopenharmony_ciCalifornia at Berkeley, overseen by Profs. Nelson Morgan and John Wawrzynek. 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ciTHIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort 7062306a36Sopenharmony_cihas been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT 7162306a36Sopenharmony_ciTIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO 7262306a36Sopenharmony_ciPERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY 7362306a36Sopenharmony_ciAND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE. 7462306a36Sopenharmony_ci------------------------------------------------------------------------------- 75