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