diff options
author | andrew <andrew@FreeBSD.org> | 2016-05-27 12:02:12 +0000 |
---|---|---|
committer | andrew <andrew@FreeBSD.org> | 2016-05-27 12:02:12 +0000 |
commit | 0f16f4c178177efe8a449c75a2fd30c006ae4a35 (patch) | |
tree | ad6132cf334d414a76131c1ecad0818481617dc7 | |
parent | c977f39a96f86b48b395550c334a72b72d8f2c69 (diff) | |
download | FreeBSD-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.S | 3 |
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) /* |