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