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