17#include "common_defines.h"
24#define __FURI_ASSERT_MESSAGE_FLAG (0x01)
25#define __FURI_CHECK_MESSAGE_FLAG (0x02)
34#define __furi_crash(message) \
36 register const void* r12 asm("r12") = (void*)message; \
37 asm volatile("sukima%=:" : : "r"(r12)); \
38 __furi_crash_implementation(); \
45#define furi_crash(...) M_APPLY(__furi_crash, M_IF_EMPTY(__VA_ARGS__)((NULL), (__VA_ARGS__)))
48#define __furi_halt(message) \
50 register const void* r12 asm("r12") = (void*)message; \
51 asm volatile("sukima%=:" : : "r"(r12)); \
52 __furi_halt_implementation(); \
59#define furi_halt(...) M_APPLY(__furi_halt, M_IF_EMPTY(__VA_ARGS__)((NULL), (__VA_ARGS__)))
62#define __furi_check(__e, __m) \
73#define furi_check(...) \
74 M_APPLY(__furi_check, M_DEFAULT_ARGS(2, (__FURI_CHECK_MESSAGE_FLAG), __VA_ARGS__))
78#define __furi_assert(__e, __m) \
85#define __furi_assert(__e, __m) \
98#define furi_assert(...) \
99 M_APPLY(__furi_assert, M_DEFAULT_ARGS(2, (__FURI_ASSERT_MESSAGE_FLAG), __VA_ARGS__))
101#define furi_break(__e) \
104 asm volatile("bkpt 0"); \
FURI_NORETURN void __furi_halt_implementation(void)
Halt system.
Definition check.c:186
FURI_NORETURN void __furi_crash_implementation(void)
Crash system.
Definition check.c:135