diff --git a/src/core/heap.c b/src/core/heap.c index 3476f4d2..05fbb6ba 100644 --- a/src/core/heap.c +++ b/src/core/heap.c @@ -3,8 +3,6 @@ #include "memsizes.h" #include "heap.h" -#define ASSERT(...) - struct heap_block { size_t size; char data[0]; @@ -102,7 +100,7 @@ void * emalloc ( size_t size, unsigned int align ) { physaddr_t addr; struct heap_block *block; - ASSERT ( ! ( align & ( align - 1 ) ) ); + ASSERT ( ( align & ( align - 1 ) ) == 0 ); addr = ( ( ( heap_ptr - size ) & ~( align - 1 ) ) - sizeof ( struct heap_block ) ); @@ -132,7 +130,7 @@ void * emalloc_all ( size_t *size ) { void efree ( void *ptr ) { struct heap_block *block; - ASSERT ( ptr == ( heap_ptr + sizeof ( size_t ) ) ); + ASSERT ( ptr == phys_to_virt ( heap_ptr + sizeof ( size_t ) ) ); block = ( struct heap_block * ) ( ptr - offsetof ( struct heap_block, data ) ); diff --git a/src/include/compiler.h b/src/include/compiler.h index 7d7c5960..4912b424 100644 --- a/src/include/compiler.h +++ b/src/include/compiler.h @@ -67,6 +67,23 @@ __asm__ ( ".equ\tDEBUG_LEVEL, " DEBUG_SYMBOL_STR ); #define DBG2 DBG_PRINT #endif +/* + * ASSERT() macros + * + */ +#define ASSERT(x) + +#if DEBUG_SYMBOL >= 1 +#undef ASSERT +#define ASSERT(x) \ + do { \ + if ( ! (x) ) { \ + DBG ( "ASSERT(%s) failed at %s line %d [%s]\n", #x, \ + __FILE__, __LINE__, __FUNCTION__ ); \ + } \ + } while (0) +#endif + #define PACKED __attribute__((packed)) #define __unused __attribute__((unused)) #define __used __attribute__((used))