Added ASSERT() macro
authorMichael Brown <mcb30@etherboot.org>
Fri, 13 May 2005 10:18:21 +0000 (10:18 +0000)
committerMichael Brown <mcb30@etherboot.org>
Fri, 13 May 2005 10:18:21 +0000 (10:18 +0000)
src/core/heap.c
src/include/compiler.h

index 3476f4d..05fbb6b 100644 (file)
@@ -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 ) );
index 7d7c596..4912b42 100644 (file)
@@ -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))