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 | |
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)
-rw-r--r-- | sys/i386/i386/apic_vector.s | 54 | ||||
-rw-r--r-- | sys/i386/i386/exception.s | 30 | ||||
-rw-r--r-- | sys/i386/i386/support.s | 10 | ||||
-rw-r--r-- | sys/i386/isa/atpic_vector.s | 12 |
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 */ \ |