cvs commit: src/sys/ia64/ia64 interrupt.c machdep.c trap.c

Marcel Moolenaar marcel at FreeBSD.org
Tue Nov 11 17:26:04 PST 2003


marcel      2003/11/11 17:26:03 PST

  FreeBSD src repository

  Modified files:
    sys/ia64/ia64        interrupt.c machdep.c trap.c 
  Log:
  Further work-out the handling of the high FP registers. The most
  important change is in cpu_switch() where we disable the high FP
  registers for the thread that we switch-out if the CPU currently
  has its high FP registers. This avoids that the high FP registers
  remain enabled for the thread even when the CPU has unloaded them
  or the thread migrated to another processor.
  Likewise, when we switch-in a thread of that has its high FP
  registers on the CPU, we enable them. This avoids an otherwise
  harmless, but unnecessary trap to have them enabled.
  
  The code that handles the disabled high FP trap (in trap()) has
  been turned into a critical section for the most part to avoid
  being preempted. If there's a race, we bail out and have the
  processor trap again if necessary.
  
  Avoid using the generic ia64_highfp_save() function when the
  context is predictable. The function adds unnecessary overhead.
  Don't use ia64_highfp_load() for the same reason. The function
  is now unused and can be removed.
  
  These changes make the lazy context switching of the high FP
  registers in an UP kernel functional.
  
  Revision  Changes    Path
  1.42      +6 -2      src/sys/ia64/ia64/interrupt.c
  1.169     +4 -0      src/sys/ia64/ia64/machdep.c
  1.94      +38 -65    src/sys/ia64/ia64/trap.c


More information about the cvs-src mailing list