1/* 2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230) 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7#pragma once 8 9static inline void wfi(void) 10{ 11 asm volatile("wfi" ::: "memory"); 12} 13 14static inline void dsb(void) 15{ 16 asm volatile("dsb sy" ::: "memory"); 17} 18 19static inline void dmb(void) 20{ 21 asm volatile("dmb sy" ::: "memory"); 22} 23 24static inline void isb(void) 25{ 26 asm volatile("isb" ::: "memory"); 27} 28 29 30#define MRS(reg, v) asm volatile("mrs %0," reg : "=r"(v)) 31#define MSR(reg, v) \ 32 do { \ 33 word_t _v = v; \ 34 asm volatile("msr " reg ",%0" :: "r" (_v));\ 35 } while(0) 36