xref: /kernel/linux/linux-5.10/arch/arm/nwfpe/ChangeLog (revision 8c2ecf20)
18c2ecf20Sopenharmony_ci2003-03-22  Ralph Siemsen <ralphs@netwinder.org>
28c2ecf20Sopenharmony_ci	* Reformat all but softfloat files to get a consistent coding style.
38c2ecf20Sopenharmony_ci	  Used "indent -kr -i8 -ts8 -sob -l132 -ss" and a few manual fixups.
48c2ecf20Sopenharmony_ci	* Removed dead code and fixed function protypes to match definitions.
58c2ecf20Sopenharmony_ci	* Consolidated use of (opcode && MASK_ARITHMETIC_OPCODE) >> 20.
68c2ecf20Sopenharmony_ci	* Make 80-bit precision a compile-time option. (1%)
78c2ecf20Sopenharmony_ci	* Only initialize FPE state once in repeat-FP situations. (6%)
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci2002-01-19  Russell King <rmk@arm.linux.org.uk>
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci	* fpa11.h - Add documentation
128c2ecf20Sopenharmony_ci	          - remove userRegisters pointer from this structure.
138c2ecf20Sopenharmony_ci	          - add new method to obtain integer register values.
148c2ecf20Sopenharmony_ci	* softfloat.c - Remove float128
158c2ecf20Sopenharmony_ci	* softfloat.h - Remove float128
168c2ecf20Sopenharmony_ci	* softfloat-specialize - Remove float128
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci	* The FPA11 structure is not a kernel-specific data structure.
198c2ecf20Sopenharmony_ci	  It is used by users of ptrace to examine the values of the
208c2ecf20Sopenharmony_ci	  floating point registers.  Therefore, any changes to the
218c2ecf20Sopenharmony_ci	  FPA11 structure (size or position of elements contained
228c2ecf20Sopenharmony_ci	  within) have to be well thought out.
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci	* Since 128-bit float requires the FPA11 structure to change
258c2ecf20Sopenharmony_ci	  size, it has been removed.  128-bit float is currently unused,
268c2ecf20Sopenharmony_ci	  and needs various things to be re-worked so that we won't
278c2ecf20Sopenharmony_ci	  overflow the available space in the task structure.
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci	* The changes are designed to break any patch that goes on top
308c2ecf20Sopenharmony_ci	  of this code, so that the authors properly review their changes.
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci1999-08-19  Scott Bambrough  <scottb@netwinder.org>
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci	* fpmodule.c - Changed version number to 0.95
358c2ecf20Sopenharmony_ci	* fpa11.h - modified FPA11, FPREG structures
368c2ecf20Sopenharmony_ci	* fpa11.c - Changes due to FPA11, FPREG structure alterations.
378c2ecf20Sopenharmony_ci	* fpa11_cpdo.c - Changes due to FPA11, FPREG structure alterations.
388c2ecf20Sopenharmony_ci	* fpa11_cpdt.c - Changes due to FPA11, FPREG structure alterations.
398c2ecf20Sopenharmony_ci	* fpa11_cprt.c - Changes due to FPA11, FPREG structure alterations.
408c2ecf20Sopenharmony_ci	* single_cpdo.c - Changes due to FPA11, FPREG structure alterations.
418c2ecf20Sopenharmony_ci	* double_cpdo.c - Changes due to FPA11, FPREG structure alterations.
428c2ecf20Sopenharmony_ci	* extended_cpdo.c - Changes due to FPA11, FPREG structure alterations.
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci	* I discovered several bugs.  First and worst is that the kernel
458c2ecf20Sopenharmony_ci	  passes in a pointer to the FPE's state area.	This is defined
468c2ecf20Sopenharmony_ci	  as a struct user_fp (see user.h).  This pointer was cast to a
478c2ecf20Sopenharmony_ci	  FPA11*.  Unfortunately FPA11 and user_fp are of different sizes;
488c2ecf20Sopenharmony_ci	  user_fp is smaller.  This meant that the FPE scribbled on things
498c2ecf20Sopenharmony_ci	  below its area, which is bad, as the area is in the thread_struct
508c2ecf20Sopenharmony_ci	  embedded in the process task structure.  Thus we were scribbling
518c2ecf20Sopenharmony_ci	  over one of the most important structures in the entire OS.
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci	* user_fp and FPA11 have now been harmonized.  Most of the changes
548c2ecf20Sopenharmony_ci	  in the above code were dereferencing problems due to moving the
558c2ecf20Sopenharmony_ci	  register type out of FPREG, and getting rid of the union variable
568c2ecf20Sopenharmony_ci	  fpvalue.
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci	* Second I noticed resetFPA11 was not always being called for a
598c2ecf20Sopenharmony_ci	  task.  This should happen on the first floating point exception
608c2ecf20Sopenharmony_ci	  that occurs.	It is controlled by init_flag in FPA11.  The
618c2ecf20Sopenharmony_ci	  comment in the code beside init_flag state the kernel guarantees
628c2ecf20Sopenharmony_ci	  this to be zero.  Not so.  I found that the kernel recycles task
638c2ecf20Sopenharmony_ci	  structures, and that recycled ones may not have init_flag zeroed.
648c2ecf20Sopenharmony_ci	  I couldn't even find anything that guarantees it is zeroed when
658c2ecf20Sopenharmony_ci	  when the task structure is initially allocated.  In any case
668c2ecf20Sopenharmony_ci	  I now initialize the entire FPE state in the thread structure to
678c2ecf20Sopenharmony_ci	  zero when allocated and recycled.  See alloc_task_struct() and
688c2ecf20Sopenharmony_ci	  flush_thread() in arch/arm/process.c.  The change to
698c2ecf20Sopenharmony_ci	  alloc_task_struct() may not be necessary, but I left it in for
708c2ecf20Sopenharmony_ci	  completeness (better safe than sorry).
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ci1998-11-23  Scott Bambrough  <scottb@netwinder.org>
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci	* README.FPE - fix typo in description of lfm/sfm instructions
758c2ecf20Sopenharmony_ci	* NOTES - Added file to describe known bugs/problems
768c2ecf20Sopenharmony_ci	* fpmodule.c - Changed version number to 0.94
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci1998-11-20  Scott Bambrough  <scottb@netwinder.org>
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci	* README.FPE - fix description of URD, NRM instructions
818c2ecf20Sopenharmony_ci	* TODO - remove URD, NRM instructions from TODO list
828c2ecf20Sopenharmony_ci	* single_cpdo.c - implement URD, NRM
838c2ecf20Sopenharmony_ci	* double_cpdo.c - implement URD, NRM
848c2ecf20Sopenharmony_ci	* extended_cpdo.c - implement URD, NRM
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci1998-11-19  Scott Bambrough  <scottb@netwinder.org>
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci	* ChangeLog - Added this file to track changes made.
898c2ecf20Sopenharmony_ci	* fpa11.c - added code to initialize register types to typeNone
908c2ecf20Sopenharmony_ci	* fpa11_cpdt.c - fixed bug in storeExtended (typeExtended changed to
918c2ecf20Sopenharmony_ci	  typeDouble in switch statement)
92