summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2004-04-16 19:26:37 +0000
committerjhb <jhb@FreeBSD.org>2004-04-16 19:26:37 +0000
commit9566eec4b512d8e968fe38d254a69c32b472f26c (patch)
tree05733ba3726f75829019066c1299acebcbfffbc3
parent1499f7edc5e949e8ab6aa24488640bb13929e7d2 (diff)
downloadFreeBSD-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)
-rw-r--r--sys/i386/i386/apic_vector.s54
-rw-r--r--sys/i386/i386/exception.s30
-rw-r--r--sys/i386/i386/support.s10
-rw-r--r--sys/i386/isa/atpic_vector.s12
4 files changed, 53 insertions, 53 deletions
diff --git a/sys/i386/i386/apic_vector.s b/sys/i386/i386/apic_vector.s
index a41a188..f68119d 100644
--- a/sys/i386/i386/apic_vector.s
+++ b/sys/i386/i386/apic_vector.s
@@ -73,10 +73,10 @@
IDTVEC(vec_name) ; \
PUSH_FRAME ; \
movl $KDSEL, %eax ; /* reload with kernel's data segment */ \
- mov %ax, %ds ; \
- mov %ax, %es ; \
+ movl %eax, %ds ; \
+ movl %eax, %es ; \
movl $KPSEL, %eax ; /* reload with per-CPU data segment */ \
- mov %ax, %fs ; \
+ movl %eax, %fs ; \
FAKE_MCOUNT(13*4(%esp)) ; \
movl lapic, %edx ; /* pointer to local APIC */ \
movl LA_ISR + 16 * (index)(%edx), %eax ; /* load ISR */ \
@@ -127,12 +127,12 @@ IDTVEC(invltlb)
pushl %eax
pushl %ds
movl $KDSEL, %eax /* Kernel data selector */
- mov %ax, %ds
+ movl %eax, %ds
#ifdef COUNT_XINVLTLB_HITS
pushl %fs
movl $KPSEL, %eax /* Private space selector */
- mov %ax, %fs
+ movl %eax, %fs
movl PCPU(CPUID), %eax
popl %fs
incl xhits_gbl(,%eax,4)
@@ -160,12 +160,12 @@ IDTVEC(invlpg)
pushl %eax
pushl %ds
movl $KDSEL, %eax /* Kernel data selector */
- mov %ax, %ds
+ movl %eax, %ds
#ifdef COUNT_XINVLTLB_HITS
pushl %fs
movl $KPSEL, %eax /* Private space selector */
- mov %ax, %fs
+ movl %eax, %fs
movl PCPU(CPUID), %eax
popl %fs
incl xhits_pg(,%eax,4)
@@ -194,12 +194,12 @@ IDTVEC(invlrng)
pushl %edx
pushl %ds
movl $KDSEL, %eax /* Kernel data selector */
- mov %ax, %ds
+ movl %eax, %ds
#ifdef COUNT_XINVLTLB_HITS
pushl %fs
movl $KPSEL, %eax /* Private space selector */
- mov %ax, %fs
+ movl %eax, %fs
movl PCPU(CPUID), %eax
popl %fs
incl xhits_rng(,%eax,4)
@@ -232,10 +232,10 @@ IDTVEC(invlrng)
IDTVEC(hardclock)
PUSH_FRAME
movl $KDSEL, %eax /* reload with kernel's data segment */
- mov %ax, %ds
- mov %ax, %es
+ movl %eax, %ds
+ movl %eax, %es
movl $KPSEL, %eax
- mov %ax, %fs
+ movl %eax, %fs
movl lapic, %edx
movl $0, LA_EOI(%edx) /* End Of Interrupt to APIC */
@@ -255,10 +255,10 @@ IDTVEC(hardclock)
IDTVEC(statclock)
PUSH_FRAME
movl $KDSEL, %eax /* reload with kernel's data segment */
- mov %ax, %ds
- mov %ax, %es
+ movl %eax, %ds
+ movl %eax, %es
movl $KPSEL, %eax
- mov %ax, %fs
+ movl %eax, %fs
movl lapic, %edx
movl $0, LA_EOI(%edx) /* End Of Interrupt to APIC */
@@ -284,10 +284,10 @@ IDTVEC(statclock)
IDTVEC(cpuast)
PUSH_FRAME
movl $KDSEL, %eax
- mov %ax, %ds /* use KERNEL data segment */
- mov %ax, %es
+ movl %eax, %ds /* use KERNEL data segment */
+ movl %eax, %es
movl $KPSEL, %eax
- mov %ax, %fs
+ movl %eax, %fs
movl lapic, %edx
movl $0, LA_EOI(%edx) /* End Of Interrupt to APIC */
@@ -317,10 +317,10 @@ IDTVEC(cpustop)
pushl %fs
movl $KDSEL, %eax
- mov %ax, %ds /* use KERNEL data segment */
- mov %ax, %es
+ movl %eax, %ds /* use KERNEL data segment */
+ movl %eax, %es
movl $KPSEL, %eax
- mov %ax, %fs
+ movl %eax, %fs
movl lapic, %eax
movl $0, LA_EOI(%eax) /* End Of Interrupt to APIC */
@@ -375,10 +375,10 @@ IDTVEC(cpustop)
IDTVEC(rendezvous)
PUSH_FRAME
movl $KDSEL, %eax
- mov %ax, %ds /* use KERNEL data segment */
- mov %ax, %es
+ movl %eax, %ds /* use KERNEL data segment */
+ movl %eax, %es
movl $KPSEL, %eax
- mov %ax, %fs
+ movl %eax, %fs
call smp_rendezvous_action
@@ -395,10 +395,10 @@ IDTVEC(rendezvous)
IDTVEC(lazypmap)
PUSH_FRAME
movl $KDSEL, %eax
- mov %ax, %ds /* use KERNEL data segment */
- mov %ax, %es
+ movl %eax, %ds /* use KERNEL data segment */
+ movl %eax, %es
movl $KPSEL, %eax
- mov %ax, %fs
+ movl %eax, %fs
call pmap_lazyfix_action
diff --git a/sys/i386/i386/exception.s b/sys/i386/i386/exception.s
index ae691b3..b8fbfa3 100644
--- a/sys/i386/i386/exception.s
+++ b/sys/i386/i386/exception.s
@@ -129,11 +129,11 @@ alltraps:
pushl %es
pushl %fs
alltraps_with_regs_pushed:
- mov $KDSEL,%ax
- mov %ax,%ds
- mov %ax,%es
- mov $KPSEL,%ax
- mov %ax,%fs
+ movl $KDSEL,%eax
+ movl %eax,%ds
+ movl %eax,%es
+ movl $KPSEL,%eax
+ movl %eax,%fs
FAKE_MCOUNT(13*4(%esp))
calltrap:
FAKE_MCOUNT(btrap) /* init "from" btrap -> calltrap */
@@ -167,11 +167,11 @@ IDTVEC(lcall_syscall)
pushl %ds
pushl %es
pushl %fs
- mov $KDSEL,%ax /* switch to kernel segments */
- mov %ax,%ds
- mov %ax,%es
- mov $KPSEL,%ax
- mov %ax,%fs
+ movl $KDSEL,%eax /* switch to kernel segments */
+ movl %eax,%ds
+ movl %eax,%es
+ movl $KPSEL,%eax
+ movl %eax,%fs
FAKE_MCOUNT(13*4(%esp))
call syscall
MEXITCOUNT
@@ -192,11 +192,11 @@ IDTVEC(int0x80_syscall)
pushl %ds
pushl %es
pushl %fs
- mov $KDSEL,%ax /* switch to kernel segments */
- mov %ax,%ds
- mov %ax,%es
- mov $KPSEL,%ax
- mov %ax,%fs
+ movl $KDSEL,%eax /* switch to kernel segments */
+ movl %eax,%ds
+ movl %eax,%es
+ movl $KPSEL,%eax
+ movl %eax,%fs
FAKE_MCOUNT(13*4(%esp))
call syscall
MEXITCOUNT
diff --git a/sys/i386/i386/support.s b/sys/i386/i386/support.s
index 1298b1b..3b9eede 100644
--- a/sys/i386/i386/support.s
+++ b/sys/i386/i386/support.s
@@ -1588,12 +1588,12 @@ ENTRY(lgdt)
1:
/* reload "stale" selectors */
movl $KDSEL,%eax
- mov %ax,%ds
- mov %ax,%es
- mov %ax,%gs
- mov %ax,%ss
+ movl %eax,%ds
+ movl %eax,%es
+ movl %eax,%gs
+ movl %eax,%ss
movl $KPSEL,%eax
- mov %ax,%fs
+ movl %eax,%fs
/* reload code selector by turning return into intersegmental return */
movl (%esp),%eax
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 */ \
OpenPOWER on IntegriCloud