summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/amd64/exception.S4
-rw-r--r--sys/amd64/ia32/ia32_exception.S1
-rw-r--r--sys/amd64/include/asmacros.h3
-rw-r--r--sys/i386/i386/apic_vector.s8
-rw-r--r--sys/i386/i386/atpic_vector.s1
-rw-r--r--sys/i386/i386/exception.s3
6 files changed, 19 insertions, 1 deletions
diff --git a/sys/amd64/amd64/exception.S b/sys/amd64/amd64/exception.S
index d18fb0d..c18f27f 100644
--- a/sys/amd64/amd64/exception.S
+++ b/sys/amd64/amd64/exception.S
@@ -191,6 +191,7 @@ alltraps_pushregs_no_rdi:
movq %r14,TF_R14(%rsp)
movq %r15,TF_R15(%rsp)
movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ cld
FAKE_MCOUNT(TF_RIP(%rsp))
#ifdef KDTRACE_HOOKS
/*
@@ -270,6 +271,7 @@ IDTVEC(dblfault)
movw %es,TF_ES(%rsp)
movw %ds,TF_DS(%rsp)
movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ cld
testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */
jz 1f /* already running with kernel GS.base */
swapgs
@@ -369,6 +371,7 @@ IDTVEC(fast_syscall)
movq %r14,TF_R14(%rsp) /* C preserved */
movq %r15,TF_R15(%rsp) /* C preserved */
movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ cld
FAKE_MCOUNT(TF_RIP(%rsp))
movq %rsp,%rdi
call syscall
@@ -434,6 +437,7 @@ IDTVEC(nmi)
movw %es,TF_ES(%rsp)
movw %ds,TF_DS(%rsp)
movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ cld
xorl %ebx,%ebx
testb $SEL_RPL_MASK,TF_CS(%rsp)
jnz nmi_fromuserspace
diff --git a/sys/amd64/ia32/ia32_exception.S b/sys/amd64/ia32/ia32_exception.S
index 341f00e..6ca7afc 100644
--- a/sys/amd64/ia32/ia32_exception.S
+++ b/sys/amd64/ia32/ia32_exception.S
@@ -67,6 +67,7 @@ IDTVEC(int0x80_syscall)
movq %r14,TF_R14(%rsp)
movq %r15,TF_R15(%rsp)
movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ cld
FAKE_MCOUNT(TF_RIP(%rsp))
movq %rsp, %rdi
call ia32_syscall
diff --git a/sys/amd64/include/asmacros.h b/sys/amd64/include/asmacros.h
index 0bf0029..1fb592a 100644
--- a/sys/amd64/include/asmacros.h
+++ b/sys/amd64/include/asmacros.h
@@ -166,7 +166,8 @@
movw %gs,TF_GS(%rsp) ; \
movw %es,TF_ES(%rsp) ; \
movw %ds,TF_DS(%rsp) ; \
- movl $TF_HASSEGS,TF_FLAGS(%rsp)
+ movl $TF_HASSEGS,TF_FLAGS(%rsp) ; \
+ cld
#define POP_FRAME \
movq TF_RDI(%rsp),%rdi ; \
diff --git a/sys/i386/i386/apic_vector.s b/sys/i386/i386/apic_vector.s
index e3000e1..cbe3871 100644
--- a/sys/i386/i386/apic_vector.s
+++ b/sys/i386/i386/apic_vector.s
@@ -56,6 +56,7 @@
IDTVEC(vec_name) ; \
PUSH_FRAME ; \
SET_KERNEL_SREGS ; \
+ cld ; \
FAKE_MCOUNT(TF_EIP(%esp)) ; \
movl lapic, %edx ; /* pointer to local APIC */ \
movl LA_ISR + 16 * (index)(%edx), %eax ; /* load ISR */ \
@@ -103,6 +104,7 @@ IDTVEC(spuriousint)
IDTVEC(timerint)
PUSH_FRAME
SET_KERNEL_SREGS
+ cld
FAKE_MCOUNT(TF_EIP(%esp))
pushl %esp
call lapic_handle_timer
@@ -118,6 +120,7 @@ IDTVEC(timerint)
IDTVEC(cmcint)
PUSH_FRAME
SET_KERNEL_SREGS
+ cld
FAKE_MCOUNT(TF_EIP(%esp))
call lapic_handle_cmc
MEXITCOUNT
@@ -131,6 +134,7 @@ IDTVEC(cmcint)
IDTVEC(errorint)
PUSH_FRAME
SET_KERNEL_SREGS
+ cld
FAKE_MCOUNT(TF_EIP(%esp))
call lapic_handle_error
MEXITCOUNT
@@ -302,6 +306,7 @@ IDTVEC(invlcache)
IDTVEC(ipi_intr_bitmap_handler)
PUSH_FRAME
SET_KERNEL_SREGS
+ cld
movl lapic, %edx
movl $0, LA_EOI(%edx) /* End Of Interrupt to APIC */
@@ -320,6 +325,7 @@ IDTVEC(ipi_intr_bitmap_handler)
IDTVEC(cpustop)
PUSH_FRAME
SET_KERNEL_SREGS
+ cld
movl lapic, %eax
movl $0, LA_EOI(%eax) /* End Of Interrupt to APIC */
@@ -339,6 +345,7 @@ IDTVEC(cpustop)
IDTVEC(rendezvous)
PUSH_FRAME
SET_KERNEL_SREGS
+ cld
#ifdef COUNT_IPIS
movl PCPU(CPUID), %eax
@@ -360,6 +367,7 @@ IDTVEC(rendezvous)
IDTVEC(lazypmap)
PUSH_FRAME
SET_KERNEL_SREGS
+ cld
call pmap_lazyfix_action
diff --git a/sys/i386/i386/atpic_vector.s b/sys/i386/i386/atpic_vector.s
index 0e4e1b6..a477aee 100644
--- a/sys/i386/i386/atpic_vector.s
+++ b/sys/i386/i386/atpic_vector.s
@@ -49,6 +49,7 @@
IDTVEC(vec_name) ; \
PUSH_FRAME ; \
SET_KERNEL_SREGS ; \
+ cld ; \
; \
FAKE_MCOUNT(TF_EIP(%esp)) ; \
pushl %esp ; \
diff --git a/sys/i386/i386/exception.s b/sys/i386/i386/exception.s
index 9db9532..575b98d 100644
--- a/sys/i386/i386/exception.s
+++ b/sys/i386/i386/exception.s
@@ -159,6 +159,7 @@ alltraps:
pushl %fs
alltraps_with_regs_pushed:
SET_KERNEL_SREGS
+ cld
FAKE_MCOUNT(TF_EIP(%esp))
calltrap:
pushl %esp
@@ -233,6 +234,7 @@ IDTVEC(lcall_syscall)
pushl %es
pushl %fs
SET_KERNEL_SREGS
+ cld
FAKE_MCOUNT(TF_EIP(%esp))
pushl %esp
call syscall
@@ -256,6 +258,7 @@ IDTVEC(int0x80_syscall)
pushl %es
pushl %fs
SET_KERNEL_SREGS
+ cld
FAKE_MCOUNT(TF_EIP(%esp))
pushl %esp
call syscall
OpenPOWER on IntegriCloud