aboutsummaryrefslogtreecommitdiff
path: root/sys/i386/isa
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2004-02-03 22:00:42 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2004-02-03 22:00:42 +0000
commit7a9d7023a212cc15b5c2add18ecf518a135c56d5 (patch)
treeb9a6efd2fe16362b210ece58d105d4016f3e1d9b /sys/i386/isa
parent908579c17277a6608589b9946077ed6683da3f91 (diff)
downloadsrc-7a9d7023a212cc15b5c2add18ecf518a135c56d5.tar.gz
src-7a9d7023a212cc15b5c2add18ecf518a135c56d5.zip
Revert the skipping of segment register reloads as it appears to actually
be a pessimization on non Pentium4 CPUs. More importantly, it is buggy as it can cause GPF's when using APM or vm86.
Notes
Notes: svn path=/head/; revision=125405
Diffstat (limited to 'sys/i386/isa')
-rw-r--r--sys/i386/isa/atpic_vector.s5
1 files changed, 1 insertions, 4 deletions
diff --git a/sys/i386/isa/atpic_vector.s b/sys/i386/isa/atpic_vector.s
index 4b819ce44688..e3dc38f6f383 100644
--- a/sys/i386/isa/atpic_vector.s
+++ b/sys/i386/isa/atpic_vector.s
@@ -63,15 +63,12 @@ IDTVEC(vec_name) ; \
pushl %ds ; /* save data and extra segments ... */ \
pushl %es ; \
pushl %fs ; \
- mov %fs,%ax ; /* get current per-cpu selector */ \
- cmp $KPSEL,%ax ; /* are we already in the kernel? */ \
- je 1f ; /* skip expensive segment reloads */ \
mov $KDSEL,%ax ; /* load kernel ds, es and fs */ \
mov %ax,%ds ; \
mov %ax,%es ; \
mov $KPSEL,%ax ; \
mov %ax,%fs ; \
-1: ; \
+; \
FAKE_MCOUNT(13*4(%esp)) ; /* XXX late to avoid double count */ \
pushl $irq_num; /* pass the IRQ */ \
call atpic_handle_intr ; \