/* * asm.h -- ARM thumb assembly instructions * * Copyright (C) 2016-2017 Tomasz Kramkowski * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef FMK_ASM_H #define FMK_ASM_H #include #define CLI() __asm__ ("cpsid i") #define STI() __asm__ ("cpsie i") #define WFI() __asm__ ("wfi") #define DMB() __asm__ ("dmb") static inline uint32_t get_BASEPRI(void) { uint32_t ret; __asm__ volatile ("mrs %0, basepri" :"=r"(ret)); return ret; } static inline void set_BASEPRI(uint32_t p) { __asm__ ("msr basepri, %0" ::"r"(p)); } #endif /* FMK_ASM_H */