18 lines
369 B
C
18 lines
369 B
C
#pragma once
|
|
|
|
#include <avr/io.h>
|
|
#include <avr/interrupt.h>
|
|
#include <stdint.h>
|
|
|
|
#include <cpu/cpu.h>
|
|
#include <sys/dbg.h>
|
|
|
|
extern intptr_t _dbg_atomic_ip;
|
|
|
|
|
|
#define ATOMIC \
|
|
inline void __restoresreg(uint8_t *sr) { SREG = *sr; rt_dbg->atomic_ip = 0; }; \
|
|
uint8_t __sreg __attribute__((__cleanup__(__restoresreg))) = SREG; \
|
|
cli(); \
|
|
rt_dbg->atomic_ip = getPC();
|