aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/libcommon/include/utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/libcommon/include/utils.h')
-rw-r--r--firmware/libcommon/include/utils.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/firmware/libcommon/include/utils.h b/firmware/libcommon/include/utils.h
new file mode 100644
index 0000000..b9af1f6
--- /dev/null
+++ b/firmware/libcommon/include/utils.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+
+#ifdef __ARM
+#define local_irq_save(x) \
+ ({ \
+ x = __get_PRIMASK(); \
+ __disable_irq(); \
+ })
+
+#define local_irq_restore(x) \
+ __set_PRIMASK(x)
+#else
+#warning "local_irq_{save,restore}() not implemented"
+#define local_irq_save(x)
+#define local_irq_restore(x)
+#endif