diff options
author | jhb <jhb@FreeBSD.org> | 2004-04-16 19:26:37 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2004-04-16 19:26:37 +0000 |
commit | 9566eec4b512d8e968fe38d254a69c32b472f26c (patch) | |
tree | 05733ba3726f75829019066c1299acebcbfffbc3 /sys/i386/isa | |
parent | 1499f7edc5e949e8ab6aa24488640bb13929e7d2 (diff) | |
download | FreeBSD-src-9566eec4b512d8e968fe38d254a69c32b472f26c.zip FreeBSD-src-9566eec4b512d8e968fe38d254a69c32b472f26c.tar.gz |
Use %eax rather than %ax when loading segment registers to avoid partial
register stalls.
Reviewed by: bde (a while ago, and I think an earlier version)
Diffstat (limited to 'sys/i386/isa')
-rw-r--r-- | sys/i386/isa/atpic_vector.s | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/i386/isa/atpic_vector.s b/sys/i386/isa/atpic_vector.s index 0f2c9e7..7cf4b7a 100644 --- a/sys/i386/isa/atpic_vector.s +++ b/sys/i386/isa/atpic_vector.s @@ -59,13 +59,13 @@ IDTVEC(vec_name) ; \ pushl %ds ; /* save data and extra segments ... */ \ pushl %es ; \ pushl %fs ; \ - mov $KDSEL,%ax ; /* load kernel ds, es and fs */ \ - mov %ax,%ds ; \ - mov %ax,%es ; \ - mov $KPSEL,%ax ; \ - mov %ax,%fs ; \ + movl $KDSEL, %eax ; /* reload with kernel's data segment */ \ + movl %eax, %ds ; \ + movl %eax, %es ; \ + movl $KPSEL, %eax ; /* reload with per-CPU data segment */ \ + movl %eax, %fs ; \ ; \ - FAKE_MCOUNT(13*4(%esp)) ; /* XXX late to avoid double count */ \ + FAKE_MCOUNT(13*4(%esp)) ; \ pushl $irq_num; /* pass the IRQ */ \ call atpic_handle_intr ; \ addl $4, %esp ; /* discard the parameter */ \ |