patch-2.3.23 linux/arch/arm/nwfpe/ChangeLog
Next file: linux/arch/arm/nwfpe/Makefile
Previous file: linux/arch/arm/mm/proc-sa110.S
Back to the patch index
Back to the overall index
- Lines: 62
- Date:
Wed Oct 20 16:29:08 1999
- Orig file:
v2.3.22/linux/arch/arm/nwfpe/ChangeLog
- Orig date:
Thu Jun 17 01:11:35 1999
diff -u --recursive --new-file v2.3.22/linux/arch/arm/nwfpe/ChangeLog linux/arch/arm/nwfpe/ChangeLog
@@ -1,10 +1,50 @@
-1998-11-23 Scott Bambrough <scottb@corelcomputer.com>
+1999-08-19 Scott Bambrough <scottb@netwinder.org>
+
+ * fpmodule.c - Changed version number to 0.95
+ * fpa11.h - modified FPA11, FPREG structures
+ * fpa11.c - Changes due to FPA11, FPREG structure alterations.
+ * fpa11_cpdo.c - Changes due to FPA11, FPREG structure alterations.
+ * fpa11_cpdt.c - Changes due to FPA11, FPREG structure alterations.
+ * fpa11_cprt.c - Changes due to FPA11, FPREG structure alterations.
+ * single_cpdo.c - Changes due to FPA11, FPREG structure alterations.
+ * double_cpdo.c - Changes due to FPA11, FPREG structure alterations.
+ * extended_cpdo.c - Changes due to FPA11, FPREG structure alterations.
+
+ * I discovered several bugs. First and worst is that the kernel
+ passes in a pointer to the FPE's state area. This is defined
+ as a struct user_fp (see user.h). This pointer was cast to a
+ FPA11*. Unfortunately FPA11 and user_fp are of different sizes;
+ user_fp is smaller. This meant that the FPE scribbled on things
+ below its area, which is bad, as the area is in the thread_struct
+ embedded in the process task structure. Thus we were scribbling
+ over one of the most important structures in the entire OS.
+
+ * user_fp and FPA11 have now been harmonized. Most of the changes
+ in the above code were dereferencing problems due to moving the
+ register type out of FPREG, and getting rid of the union variable
+ fpvalue.
+
+ * Second I noticed resetFPA11 was not always being called for a
+ task. This should happen on the first floating point exception
+ that occurs. It is controlled by init_flag in FPA11. The
+ comment in the code beside init_flag state the kernel guarantees
+ this to be zero. Not so. I found that the kernel recycles task
+ structures, and that recycled ones may not have init_flag zeroed.
+ I couldn't even find anything that guarantees it is zeroed when
+ when the task structure is initially allocated. In any case
+ I now initialize the entire FPE state in the thread structure to
+ zero when allocated and recycled. See alloc_task_struct() and
+ flush_thread() in arch/arm/process.c. The change to
+ alloc_task_struct() may not be necessary, but I left it in for
+ completeness (better safe than sorry).
+
+1998-11-23 Scott Bambrough <scottb@netwinder.org>
* README.FPE - fix typo in description of lfm/sfm instructions
* NOTES - Added file to describe known bugs/problems
* fpmodule.c - Changed version number to 0.94
-1998-11-20 Scott Bambrough <scottb@corelcomputer.com>
+1998-11-20 Scott Bambrough <scottb@netwinder.org>
* README.FPE - fix description of URD, NRM instructions
* TODO - remove URD, NRM instructions from TODO list
@@ -12,7 +52,7 @@
* double_cpdo.c - implement URD, NRM
* extended_cpdo.c - implement URD, NRM
-1998-11-19 Scott Bambrough <scottb@corelcomputer.com>
+1998-11-19 Scott Bambrough <scottb@netwinder.org>
* ChangeLog - Added this file to track changes made.
* fpa11.c - added code to initialize register types to typeNone
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)