18c2ecf20Sopenharmony_ciIntroduction 28c2ecf20Sopenharmony_ci============ 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ciThis directory contains the version 0.92 test release of the NetWinder 58c2ecf20Sopenharmony_ciFloating Point Emulator. 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ciThe majority of the code was written by me, Scott Bambrough It is 88c2ecf20Sopenharmony_ciwritten in C, with a small number of routines in inline assembler 98c2ecf20Sopenharmony_ciwhere required. It was written quickly, with a goal of implementing a 108c2ecf20Sopenharmony_ciworking version of all the floating point instructions the compiler 118c2ecf20Sopenharmony_ciemits as the first target. I have attempted to be as optimal as 128c2ecf20Sopenharmony_cipossible, but there remains much room for improvement. 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciI have attempted to make the emulator as portable as possible. One of 158c2ecf20Sopenharmony_cithe problems is with leading underscores on kernel symbols. Elf 168c2ecf20Sopenharmony_cikernels have no leading underscores, a.out compiled kernels do. I 178c2ecf20Sopenharmony_cihave attempted to use the C_SYMBOL_NAME macro wherever this may be 188c2ecf20Sopenharmony_ciimportant. 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciAnother choice I made was in the file structure. I have attempted to 218c2ecf20Sopenharmony_cicontain all operating system specific code in one module (fpmodule.*). 228c2ecf20Sopenharmony_ciAll the other files contain emulator specific code. This should allow 238c2ecf20Sopenharmony_ciothers to port the emulator to NetBSD for instance relatively easily. 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ciThe floating point operations are based on SoftFloat Release 2, by 268c2ecf20Sopenharmony_ciJohn Hauser. SoftFloat is a software implementation of floating-point 278c2ecf20Sopenharmony_cithat conforms to the IEC/IEEE Standard for Binary Floating-point 288c2ecf20Sopenharmony_ciArithmetic. As many as four formats are supported: single precision, 298c2ecf20Sopenharmony_cidouble precision, extended double precision, and quadruple precision. 308c2ecf20Sopenharmony_ciAll operations required by the standard are implemented, except for 318c2ecf20Sopenharmony_ciconversions to and from decimal. We use only the single precision, 328c2ecf20Sopenharmony_cidouble precision and extended double precision formats. The port of 338c2ecf20Sopenharmony_ciSoftFloat to the ARM was done by Phil Blundell, based on an earlier 348c2ecf20Sopenharmony_ciport of SoftFloat version 1 by Neil Carson for NetBSD/arm32. 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciThe file README.FPE contains a description of what has been implemented 378c2ecf20Sopenharmony_ciso far in the emulator. The file TODO contains a information on what 388c2ecf20Sopenharmony_ciremains to be done, and other ideas for the emulator. 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ciBug reports, comments, suggestions should be directed to me at 418c2ecf20Sopenharmony_ci<scottb@netwinder.org>. General reports of "this program doesn't 428c2ecf20Sopenharmony_ciwork correctly when your emulator is installed" are useful for 438c2ecf20Sopenharmony_cidetermining that bugs still exist; but are virtually useless when 448c2ecf20Sopenharmony_ciattempting to isolate the problem. Please report them, but don't 458c2ecf20Sopenharmony_ciexpect quick action. Bugs still exist. The problem remains in isolating 468c2ecf20Sopenharmony_ciwhich instruction contains the bug. Small programs illustrating a specific 478c2ecf20Sopenharmony_ciproblem are a godsend. 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ciLegal Notices 508c2ecf20Sopenharmony_ci------------- 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ciThe NetWinder Floating Point Emulator is free software. Everything Rebel.com 538c2ecf20Sopenharmony_cihas written is provided under the GNU GPL. See the file COPYING for copying 548c2ecf20Sopenharmony_ciconditions. Excluded from the above is the SoftFloat code. John Hauser's 558c2ecf20Sopenharmony_cilegal notice for SoftFloat is included below. 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci------------------------------------------------------------------------------- 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ciSoftFloat Legal Notice 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ciSoftFloat was written by John R. Hauser. This work was made possible in 628c2ecf20Sopenharmony_cipart by the International Computer Science Institute, located at Suite 600, 638c2ecf20Sopenharmony_ci1947 Center Street, Berkeley, California 94704. Funding was partially 648c2ecf20Sopenharmony_ciprovided by the National Science Foundation under grant MIP-9311980. The 658c2ecf20Sopenharmony_cioriginal version of this code was written as part of a project to build 668c2ecf20Sopenharmony_cia fixed-point vector processor in collaboration with the University of 678c2ecf20Sopenharmony_ciCalifornia at Berkeley, overseen by Profs. Nelson Morgan and John Wawrzynek. 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ciTHIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort 708c2ecf20Sopenharmony_cihas been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT 718c2ecf20Sopenharmony_ciTIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO 728c2ecf20Sopenharmony_ciPERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY 738c2ecf20Sopenharmony_ciAND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE. 748c2ecf20Sopenharmony_ci------------------------------------------------------------------------------- 75