summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/apic_vector.S5
-rw-r--r--sys/i386/i386/apic_vector.s5
2 files changed, 4 insertions, 6 deletions
diff --git a/sys/amd64/amd64/apic_vector.S b/sys/amd64/amd64/apic_vector.S
index 2e7e445..5d7685b 100644
--- a/sys/amd64/amd64/apic_vector.S
+++ b/sys/amd64/amd64/apic_vector.S
@@ -297,11 +297,10 @@ IDTVEC(cpustop)
test %eax, %eax
jnz 2f
- xorq %rax, %rax
- lock
- xchgq cpustop_restartfunc, %rax
+ movq cpustop_restartfunc, %rax
testq %rax, %rax
jz 2f
+ movq $0, cpustop_restartfunc /* One-shot */
call *%rax
2:
diff --git a/sys/i386/i386/apic_vector.s b/sys/i386/i386/apic_vector.s
index e8f6f9d..99b765f 100644
--- a/sys/i386/i386/apic_vector.s
+++ b/sys/i386/i386/apic_vector.s
@@ -340,11 +340,10 @@ IDTVEC(cpustop)
test %eax, %eax
jnz 2f
- xorl %eax, %eax
- lock
- xchgl CNAME(cpustop_restartfunc), %eax
+ movl CNAME(cpustop_restartfunc), %eax
test %eax, %eax
jz 2f
+ movl $0, CNAME(cpustop_restartfunc) /* One-shot */
call *%eax
2:
OpenPOWER on IntegriCloud