1 #ifndef __SDCC_STDATOMIC_H
2 #define __SDCC_STDATOMIC_H 1
6 #ifndef __SDCC_ATOMIC_EXTERN
7 #define __SDCC_ATOMIC_EXTERN
10 typedef struct {unsigned char flag
;} atomic_flag
;
12 _Bool
atomic_flag_test_and_set(volatile atomic_flag
*object
) __SDCC_NONBANKED
;
14 #if defined(__SDCC_mcs51) || defined(__SDCC_ds390)
16 #define ATOMIC_FLAG_INIT {0}
19 inline void atomic_flag_clear(volatile atomic_flag
*object
) __SDCC_NONBANKED
24 #elif defined(__SDCC_f8)
26 #define ATOMIC_FLAG_INIT {0}
28 _Bool
atomic_flag_test_and_set(volatile atomic_flag
*object
);
31 inline void atomic_flag_clear(volatile atomic_flag
*object
)
36 #elif defined(__SDCC_z80) || defined(__SDCC_z180) || defined(__SDCC_ez80_z80) || defined(__SDCC_z80n) || defined(__SDCC_sm83) || defined(__SDCC_r2k) || defined(__SDCC_r2ka) || defined(__SDCC_r3ka) || defined(__SDCC_r800)
38 #define ATOMIC_FLAG_INIT {0xfe}
41 inline void atomic_flag_clear(volatile atomic_flag
*object
)
46 #elif defined(__SDCC_tlcs90) || defined(__SDCC_stm8) || defined(__SDCC_hc08) || defined(__SDCC_s08) || defined(__SDCC_mos6502) || defined(__SDCC_mos65c02)
48 #define ATOMIC_FLAG_INIT {1}
51 inline void atomic_flag_clear(volatile atomic_flag
*object
)
58 #error Support for atomic_flag not implemented