altos/stm: Allow use basepri instead of primask for masking interrupts
[fw/altos] / src / stm / ao_arch.h
index 3d09af3c8e27de12f9fa24ce3486c18d920a4dd6..5f033b66219e36719164e7864b8e4121977b8934 100644 (file)
@@ -85,10 +85,6 @@ extern const uint32_t ao_radio_cal;
 #define ao_arch_task_members\
        uint32_t *sp;                   /* saved stack pointer */
 
-#define ao_arch_block_interrupts()     asm("cpsid i")
-#define ao_arch_release_interrupts()   asm("cpsie i")
-
-
 /*
  * For now, we're running at a weird frequency
  */
@@ -124,6 +120,15 @@ extern const uint32_t ao_radio_cal;
 
 /* The stm32l implements only 4 bits of the priority fields */
 
+#if AO_NONMASK_INTERRUPT
+#define AO_STM_NVIC_NONMASK_PRIORITY   0x00
+
+/* Set the basepri register to this value to mask all
+ * non-maskable priorities
+ */
+#define AO_STM_NVIC_BASEPRI_MASK       0x10
+#endif
+
 #define AO_STM_NVIC_HIGH_PRIORITY      0x40
 #define AO_STM_NVIC_MED_PRIORITY       0x80
 #define AO_STM_NVIC_LOW_PRIORITY       0xC0