aboutsummaryrefslogtreecommitdiff
path: root/src/asm.rs
diff options
context:
space:
mode:
authorGravatar Hugues de Valon <hugues.devalon@arm.com> 2020-10-02 17:12:43 +0100
committerGravatar Hugues de Valon <hugues.devalon@arm.com> 2020-10-02 17:39:36 +0100
commit7102bd4c048d96f65f79f32c1f0b1c59e1a32a51 (patch)
tree06c7b191bc4d92137762ba88a8aa072426d36bda /src/asm.rs
parent43b9383cbedc5b0fb0b2df51df0e7af742fb7b61 (diff)
downloadcortex-m-7102bd4c048d96f65f79f32c1f0b1c59e1a32a51.tar.gz
cortex-m-7102bd4c048d96f65f79f32c1f0b1c59e1a32a51.tar.zst
cortex-m-7102bd4c048d96f65f79f32c1f0b1c59e1a32a51.zip
Add some Armv8-M assembly routines
Adds access to MSP_NS and the BXNS instruction. Also adds __dsb which was missing. Signed-off-by: Hugues de Valon <hugues.devalon@arm.com>
Diffstat (limited to 'src/asm.rs')
-rw-r--r--src/asm.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/asm.rs b/src/asm.rs
index 3165aca..8f23aa9 100644
--- a/src/asm.rs
+++ b/src/asm.rs
@@ -154,3 +154,13 @@ pub fn ttat(addr: *mut u32) -> u32 {
let addr = addr as u32;
call_asm!(__ttat(addr: u32) -> u32)
}
+
+/// Branch and Exchange Non-secure
+///
+/// See section C2.4.26 of Armv8-M Architecture Reference Manual for details.
+/// Undefined if executed in Non-Secure state.
+#[inline]
+#[cfg(armv8m)]
+pub unsafe fn bx_ns(addr: u32) {
+ call_asm!(__bxns(addr: u32));
+}