mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:42:44 +00:00 
			
		
		
		
	 736092a087
			
		
	
	
		736092a087
		
	
	
	
	
		
			
			There's a ton of work that would need to be done before we could spin up on another architecture, but let's at least try to separate things out a bit.
		
			
				
	
	
		
			24 lines
		
	
	
	
		
			824 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			824 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <Kernel/Arch/i386/CPU.h>
 | |
| #include <Kernel/kstdio.h>
 | |
| 
 | |
| #ifdef DEBUG
 | |
| [[noreturn]] void __assertion_failed(const char* msg, const char* file, unsigned line, const char* func);
 | |
| #    define ASSERT(expr) (static_cast<bool>(expr) ? (void)0 : __assertion_failed(#    expr, __FILE__, __LINE__, __PRETTY_FUNCTION__))
 | |
| #    define ASSERT_NOT_REACHED() ASSERT(false)
 | |
| #else
 | |
| #    define ASSERT(expr)
 | |
| #    define ASSERT_NOT_REACHED() CRASH()
 | |
| #endif
 | |
| #define CRASH()              \
 | |
|     do {                     \
 | |
|         asm volatile("ud2"); \
 | |
|     } while (0)
 | |
| #define RELEASE_ASSERT(x) \
 | |
|     do {                  \
 | |
|         if (!(x))         \
 | |
|             CRASH();      \
 | |
|     } while (0)
 | |
| #define ASSERT_INTERRUPTS_DISABLED() ASSERT(!(cpu_flags() & 0x200))
 | |
| #define ASSERT_INTERRUPTS_ENABLED() ASSERT(cpu_flags() & 0x200)
 |