Kyle Swenson | 8d8f654 | 2021-03-15 11:02:55 -0600 | [diff] [blame^] | 1 | 2003-03-22 Ralph Siemsen <ralphs@netwinder.org> |
| 2 | * Reformat all but softfloat files to get a consistent coding style. |
| 3 | Used "indent -kr -i8 -ts8 -sob -l132 -ss" and a few manual fixups. |
| 4 | * Removed dead code and fixed function protypes to match definitions. |
| 5 | * Consolidated use of (opcode && MASK_ARITHMETIC_OPCODE) >> 20. |
| 6 | * Make 80-bit precision a compile-time option. (1%) |
| 7 | * Only initialize FPE state once in repeat-FP situations. (6%) |
| 8 | |
| 9 | 2002-01-19 Russell King <rmk@arm.linux.org.uk> |
| 10 | |
| 11 | * fpa11.h - Add documentation |
| 12 | - remove userRegisters pointer from this structure. |
| 13 | - add new method to obtain integer register values. |
| 14 | * softfloat.c - Remove float128 |
| 15 | * softfloat.h - Remove float128 |
| 16 | * softfloat-specialize - Remove float128 |
| 17 | |
| 18 | * The FPA11 structure is not a kernel-specific data structure. |
| 19 | It is used by users of ptrace to examine the values of the |
| 20 | floating point registers. Therefore, any changes to the |
| 21 | FPA11 structure (size or position of elements contained |
| 22 | within) have to be well thought out. |
| 23 | |
| 24 | * Since 128-bit float requires the FPA11 structure to change |
| 25 | size, it has been removed. 128-bit float is currently unused, |
| 26 | and needs various things to be re-worked so that we won't |
| 27 | overflow the available space in the task structure. |
| 28 | |
| 29 | * The changes are designed to break any patch that goes on top |
| 30 | of this code, so that the authors properly review their changes. |
| 31 | |
| 32 | 1999-08-19 Scott Bambrough <scottb@netwinder.org> |
| 33 | |
| 34 | * fpmodule.c - Changed version number to 0.95 |
| 35 | * fpa11.h - modified FPA11, FPREG structures |
| 36 | * fpa11.c - Changes due to FPA11, FPREG structure alterations. |
| 37 | * fpa11_cpdo.c - Changes due to FPA11, FPREG structure alterations. |
| 38 | * fpa11_cpdt.c - Changes due to FPA11, FPREG structure alterations. |
| 39 | * fpa11_cprt.c - Changes due to FPA11, FPREG structure alterations. |
| 40 | * single_cpdo.c - Changes due to FPA11, FPREG structure alterations. |
| 41 | * double_cpdo.c - Changes due to FPA11, FPREG structure alterations. |
| 42 | * extended_cpdo.c - Changes due to FPA11, FPREG structure alterations. |
| 43 | |
| 44 | * I discovered several bugs. First and worst is that the kernel |
| 45 | passes in a pointer to the FPE's state area. This is defined |
| 46 | as a struct user_fp (see user.h). This pointer was cast to a |
| 47 | FPA11*. Unfortunately FPA11 and user_fp are of different sizes; |
| 48 | user_fp is smaller. This meant that the FPE scribbled on things |
| 49 | below its area, which is bad, as the area is in the thread_struct |
| 50 | embedded in the process task structure. Thus we were scribbling |
| 51 | over one of the most important structures in the entire OS. |
| 52 | |
| 53 | * user_fp and FPA11 have now been harmonized. Most of the changes |
| 54 | in the above code were dereferencing problems due to moving the |
| 55 | register type out of FPREG, and getting rid of the union variable |
| 56 | fpvalue. |
| 57 | |
| 58 | * Second I noticed resetFPA11 was not always being called for a |
| 59 | task. This should happen on the first floating point exception |
| 60 | that occurs. It is controlled by init_flag in FPA11. The |
| 61 | comment in the code beside init_flag state the kernel guarantees |
| 62 | this to be zero. Not so. I found that the kernel recycles task |
| 63 | structures, and that recycled ones may not have init_flag zeroed. |
| 64 | I couldn't even find anything that guarantees it is zeroed when |
| 65 | when the task structure is initially allocated. In any case |
| 66 | I now initialize the entire FPE state in the thread structure to |
| 67 | zero when allocated and recycled. See alloc_task_struct() and |
| 68 | flush_thread() in arch/arm/process.c. The change to |
| 69 | alloc_task_struct() may not be necessary, but I left it in for |
| 70 | completeness (better safe than sorry). |
| 71 | |
| 72 | 1998-11-23 Scott Bambrough <scottb@netwinder.org> |
| 73 | |
| 74 | * README.FPE - fix typo in description of lfm/sfm instructions |
| 75 | * NOTES - Added file to describe known bugs/problems |
| 76 | * fpmodule.c - Changed version number to 0.94 |
| 77 | |
| 78 | 1998-11-20 Scott Bambrough <scottb@netwinder.org> |
| 79 | |
| 80 | * README.FPE - fix description of URD, NRM instructions |
| 81 | * TODO - remove URD, NRM instructions from TODO list |
| 82 | * single_cpdo.c - implement URD, NRM |
| 83 | * double_cpdo.c - implement URD, NRM |
| 84 | * extended_cpdo.c - implement URD, NRM |
| 85 | |
| 86 | 1998-11-19 Scott Bambrough <scottb@netwinder.org> |
| 87 | |
| 88 | * ChangeLog - Added this file to track changes made. |
| 89 | * fpa11.c - added code to initialize register types to typeNone |
| 90 | * fpa11_cpdt.c - fixed bug in storeExtended (typeExtended changed to |
| 91 | typeDouble in switch statement) |