All host tests currently pass Some async refactors may not work well on device, will try later
		
			
				
	
	
		
			23 lines
		
	
	
		
			439 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			439 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #ifndef __x86_64__
 | |
| #include "aum1_cm1.h"
 | |
| 
 | |
| struct InterruptLock {
 | |
|     uint32_t old_primask;
 | |
| 
 | |
|     InterruptLock() : old_primask(__get_PRIMASK()) { __disable_irq(); }
 | |
| 
 | |
|     ~InterruptLock() {
 | |
|         __set_PRIMASK(old_primask);
 | |
|     }
 | |
| };
 | |
| #else  // __x86_64__
 | |
| #include <mutex>
 | |
| 
 | |
| struct InterruptLock {
 | |
|     static std::recursive_mutex m;
 | |
|     InterruptLock() { m.lock(); }
 | |
|     ~InterruptLock() { m.unlock(); }
 | |
| };
 | |
| #endif  // __x86_64__
 |