summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2016-05-27 12:02:12 +0000
committerandrew <andrew@FreeBSD.org>2016-05-27 12:02:12 +0000
commit0f16f4c178177efe8a449c75a2fd30c006ae4a35 (patch)
treead6132cf334d414a76131c1ecad0818481617dc7
parentc977f39a96f86b48b395550c334a72b72d8f2c69 (diff)
downloadFreeBSD-src-0f16f4c178177efe8a449c75a2fd30c006ae4a35.zip
FreeBSD-src-0f16f4c178177efe8a449c75a2fd30c006ae4a35.tar.gz
Fix dtrace_interrupt_disable and dtrace_interrupt_enable by having the
former return the current status for the latter to use. Without this we could enable interrupts when they shouldn't be. It's still not quite right as it should only update the bits we care about, bit should be good enough until the correct fix can be tested. PR: 204270 Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation
-rw-r--r--sys/cddl/dev/dtrace/aarch64/dtrace_asm.S3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/cddl/dev/dtrace/aarch64/dtrace_asm.S b/sys/cddl/dev/dtrace/aarch64/dtrace_asm.S
index 9ab4499..a0ed8a7 100644
--- a/sys/cddl/dev/dtrace/aarch64/dtrace_asm.S
+++ b/sys/cddl/dev/dtrace/aarch64/dtrace_asm.S
@@ -55,6 +55,7 @@ END(dtrace_membar_consumer)
dtrace_icookie_t dtrace_interrupt_disable(void)
*/
ENTRY(dtrace_interrupt_disable)
+ mrs x0, daif
msr daifset, #2
RET
END(dtrace_interrupt_disable)
@@ -63,7 +64,7 @@ END(dtrace_interrupt_disable)
void dtrace_interrupt_enable(dtrace_icookie_t cookie)
*/
ENTRY(dtrace_interrupt_enable)
- msr daifclr, #2
+ msr daif, x0
RET
END(dtrace_interrupt_enable)
/*
OpenPOWER on IntegriCloud