home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Bug_Fixes / Net.v7bugs / 0030 < prev    next >
Encoding:
Text File  |  1981-08-11  |  1.1 KB  |  24 lines

  1. Autzoo.879
  2. net.v7bugs
  3. utzoo!henry
  4. Tue Aug 11 19:17:02 1981
  5. non-I/D floating-point
  6. Mike Tilson of Human Computing Resources has uncovered a fairly serious
  7. bug in the machine-language assist for non-I/D machines.  The code
  8. tests to see whether the machine has hardware floating-point, and
  9. sets the variable "fpp" appropriately;  said variable is consulted at
  10. context-switch time to determine whether floating-point registers should
  11. be saved and restored.  But in the version of this code for non-I/D
  12. machines, fpp is set just before the clearing of the kernel bss -- and
  13. fpp is IN THE BSS!  Hence, on a non-I/D machine, fpp is always 0,
  14. floating-point registers are NEVER saved/restored, and if the machine
  15. has floating-point hardware and more than one process is trying to use
  16. it, chaos and madness will ensue.
  17.  
  18. Fix is to move the six lines of code starting "/ test for floating point"
  19. and ending "clr nofault", at about line 55 of /usr/sys/40/m40.s, to just
  20. after the clearing of the bss (i.e. to about line 69).
  21.  
  22. This bug is present in both the Bell m40.s and the Dec-Merrimack mch_i.s .
  23. The I/D versions get things right in both cases.
  24.