Home | History | Annotate | Download | only in fpe
History log of /src/sys/arch/m68k/fpe/fpu_calcea.c
RevisionDateAuthorComments
 1.28  28-Dec-2024  isaki Fix indent.
 1.27  06-Apr-2019  thorpej Overhaul the API used to fetch and store individual memory cells in
userspace. The old fetch(9) and store(9) APIs (fubyte(), fuword(),
subyte(), suword(), etc.) are retired and replaced with new ufetch(9)
and ustore(9) APIs that can return proper error codes, etc. and are
implemented consistently across all platforms. The interrupt-safe
variants are no longer supported (and several of the existing attempts
at fuswintr(), etc. were buggy and not actually interrupt-safe).

Also augmement the ucas(9) API, making it consistently available on
all plaforms, supporting uniprocessor and multiprocessor systems, even
those that do not have CAS or LL/SC primitives.

Welcome to NetBSD 8.99.37.
 1.26  18-Jul-2011  isaki branches: 1.26.54;
fix indent again.
- "Second level indents are four spaces." pointed out by tsutsui@
- fold long line.
 1.25  18-Jul-2011  isaki fix indent. no functional changes.
 1.24  25-May-2011  tsutsui - consistently use #ifdef DEBUG_FPE and #ifdef DIAGNOSTIC
- use DPRINTF() style debug printfs
- use __func__ to print function names
 1.23  25-May-2011  tsutsui KNF. No binary change.
 1.22  06-Jun-2010  mrg branches: 1.22.2;
fix PR 6724 - convert m68k options to defflag's. this means that
M680[12346] are now available from opt_m68k_arch.h. FPSP meantioned
in the PR has already been fixed, and i could not find any more.

i built these kernels to ensure i did not break their builds:

amiga: GENERIC DRACO
atari: HADES FALCON MILAN-PCIIDE
mac68k: GENERIC
sun2: GENERIC
sun3: GENERIC GENERIC3X
cesfic: attempted GENERIC, does not build due to lack of machine/bus.h
hp300: GENERIC
luna68k: GENERIC
mvme68k: GENERIC
news68k: GENERIC
next68k: GENERIC
x68k: GENERIC
 1.21  14-Mar-2009  dsl branches: 1.21.2; 1.21.4;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.20  14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.19  14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.18  09-Mar-2007  tsutsui branches: 1.18.44; 1.18.52; 1.18.58;
Don't disable EA_DIRECT in fpu_load_ea(), which seems disabled
accidentally in rev 1.11 about six years ago, otherwise
fmovel %dN,%fpN instructions cause unexpected memory access.
 1.17  11-Dec-2005  christos branches: 1.17.24; 1.17.26;
merge ktrace-lwp.
 1.16  13-Feb-2004  wiz branches: 1.16.14; 1.16.16;
Uppercase CPU, plural is CPUs.
 1.15  15-Jul-2003  lukem __KERNEL_RCSID()
 1.14  27-Sep-2002  provos branches: 1.14.6;
remove trailing \n in panic(). approved perry.
 1.13  28-Jul-2001  tsutsui branches: 1.13.6;
bcopy -> memcpy
 1.12  05-Jul-2001  toshii branches: 1.12.2;
Fix typo. s/extention/extension/
 1.11  01-Mar-2001  is Don't use the frames' provided EA yet; something is wrong.
 1.10  05-Jan-2001  is Make this actually sort-of-work for 68060 w. disabled FPU (tested), 68LC060,
and I suspect, 68LC040 and 68040V machines. Method used:

1. do NOT use the frames effective address at all
2. do NOT use the frames next instruction address, but
3. restore the "this instruction" pc into the pc field of the frame at the
beginning of the emulation, if we got a frame format 4.

TODO:
A. find the bug in the usage of the frame EA, and revert to using it.
B. find the bug in the usage of the frames next instruction address, and
consider whether it's worthwhile to use it.
C. make the emulation complete.... FEXP FETOM1, and the trigonometric functions
are missing.
 1.9  13-Jun-2000  minoura Argument modreg of fpu_decode_ea() is actually an opecode.
That bug prevented awk(1) to work.
 1.8  30-May-1999  briggs branches: 1.8.2; 1.8.10;
PR 7220 from Ken Nakata:
I've fixed most (not all) m68k FPE bugs that give bogus
calculation results, esp. fsqrt instruction. Also, the internal FP
representation has been reduced from 115-bit mantissa to 67-bit
mantissa which reduced the required mantissa operation roughly by one
fourth. I've done an extensive (though not exhaustive - it's
impossible!) test on the internal routines by feeding them randomly
generated FP numbers, and found that the new code is more precise than
MC68040 FPU (it seems to have a rounding bug).

[ Only change was to keep fpu_calcea.c's name instead of renaming to
fpu_ea.c in Ken's patch. --akb ]
 1.7  16-Oct-1996  scottr branches: 1.7.22; 1.7.24; 1.7.26;
Eliminate fusword() prototype, as it's now in <sys/systm.h>
 1.6  13-Oct-1996  christos backout previous kprintf change
 1.5  11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.4  30-Apr-1996  briggs Update for -Wall -Wstrict-prototypes -Wmissing-prototypes -Wno-uninitialized.
 1.3  04-Feb-1996  briggs sys/types.h -> sys/param.h and remove include of stddef.h.
 1.2  05-Nov-1995  briggs Fixes from Ken Nakata. Mainly renaming debug_level to fpu_debug_level.
 1.1  03-Nov-1995  briggs Still incomplete, but much more complete FPE from Ken Nakata
<kenn@remus.rutgers.edu>. This emulator does not yet emulate
the following functions:
FSINH, FETOXM1, FTANH, FATAN, FASIN, FATANH, FSIN, FTAN,
FETOX, FTWOTOX, FTENTOX, FCOSH, FACOS, FCOS, FSINCOS
It is sufficient, however, to allow programs like df, w, and newfs,
to run to completion with correct results.
Portions of this code were based on the sparc fpe and on initial
work by gwr.
 1.7.26.1  30-Nov-1999  itojun bring in latest KAME (as of 19991130, KAME/NetBSD141) into kame branch
just for reference purposes.
This commit includes 1.4 -> 1.4.1 sync for kame branch.

The branch does not compile at all (due to the lack of ALTQ and some other
source code). Please do not try to modify the branch, this is just for
referenre purposes.

synchronization to latest KAME will take place on HEAD branch soon.
 1.7.24.1  21-Jun-1999  thorpej Sync w/ -current.
 1.7.22.2  06-Feb-2000  he Apply patch (requested by is):
Revert floating point emulation software to the version released
as NetBSD 1.4. The upgrade done in 1.4.1 had problems.
 1.7.22.1  21-Jun-1999  perry pullup 1.7->1.8 (briggs): fix FPE
 1.8.10.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.8.2.3  12-Mar-2001  bouyer Sync with HEAD.
 1.8.2.2  18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.8.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.12.2.2  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.12.2.1  03-Aug-2001  lukem update to -current
 1.13.6.2  18-Oct-2002  nathanw Catch up to -current.
 1.13.6.1  28-Jul-2001  nathanw file fpu_calcea.c was added on branch nathanw_sa on 2002-10-18 02:38:14 +0000
 1.14.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.14.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.14.6.1  03-Aug-2004  skrll Sync with HEAD
 1.16.16.1  03-Sep-2007  yamt sync with head.
 1.16.14.1  31-Mar-2007  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1703):
sys/arch/m68k/fpe/fpu_emulate.c: revision 1.27
sys/arch/m68k/fpe/fpu_calcea.c: revision 1.18
sys/arch/m68k/fpe/fpu_fstore.c: revision 1.10
Make these compile with options DEBUG_FPE.
Don't disable EA_DIRECT in fpu_load_ea(), which seems disabled
accidentally in rev 1.11 about six years ago, otherwise
fmovel %dN,%fpN instructions cause unexpected memory access.
 1.17.26.1  12-Mar-2007  rmind Sync with HEAD.
 1.17.24.1  31-Mar-2007  bouyer Pull up following revision(s) (requested by tsutsui in ticket #526):
sys/arch/m68k/fpe/fpu_emulate.c: revision 1.27
sys/arch/m68k/fpe/fpu_calcea.c: revision 1.18
sys/arch/m68k/fpe/fpu_fstore.c: revision 1.10
Make these compile with options DEBUG_FPE.
Don't disable EA_DIRECT in fpu_load_ea(), which seems disabled
accidentally in rev 1.11 about six years ago, otherwise
fmovel %dN,%fpN instructions cause unexpected memory access.
 1.18.58.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.18.52.1  28-Apr-2009  skrll Sync with HEAD.
 1.18.44.2  11-Aug-2010  yamt sync with head.
 1.18.44.1  04-May-2009  yamt sync with head.
 1.21.4.2  31-May-2011  rmind sync with head
 1.21.4.1  03-Jul-2010  rmind sync with head
 1.21.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.22.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.26.54.1  10-Jun-2019  christos Sync with HEAD

RSS XML Feed