* memory regions. This helps catching pointers taken from
* struct/class memebers when the struct pointer was NULL.
*/
- #define ASSERT_VALID_PTR(p) ((void)(LIKELY((p) >= 0x200) ? 0 : __invalid_ptr(p, #p, THIS_FILE, __LINE__)))
+ #define ASSERT_VALID_PTR(p) ((void)(LIKELY((p) >= (void *)CPU_RAM_START) \
+ ? 0 : __invalid_ptr(p, #p, THIS_FILE, __LINE__)))
/**
* Check that the given pointer is not pointing to invalid memory.
*
* \see ASSERT_VALID_PTR()
*/
- #define ASSERT_VALID_PTR_OR_NULL(p) ((void)(LIKELY((p == NULL) || ((p) >= 0x200)) ? 0 : __invalid_ptr((p), #p, THIS_FILE, __LINE__)))
+ #define ASSERT_VALID_PTR_OR_NULL(p) ((void)(LIKELY((p == NULL) || ((p) >= (void *)CPU_RAM_START)) \
+ ? 0 : __invalid_ptr((p), #p, THIS_FILE, __LINE__)))
#if !CONFIG_KDEBUG_DISABLE_TRACE
#define TRACE __trace(__func__)
#define CPU_BYTE_ORDER CPU_LITTLE_ENDIAN
#define CPU_HARVARD 0
+ /// Valid pointers should be >= than this value (used for debug)
+ #define CPU_RAM_START 0x100
+
#elif CPU_X86
#define NOP asm volatile ("nop")
#define CPU_REG_BITS 32
#endif
+ /// Valid pointers should be >= than this value (used for debug)
+ #define CPU_RAM_START 0x1000
+
#elif CPU_ARM
/* Register counts include SREG too */
#define CPU_SP_ON_EMPTY_SLOT 0
#define CPU_HARVARD 0
+ /// Valid pointers should be >= than this value (used for debug)
+ #define CPU_RAM_START 0x200
+
#ifdef __IAR_SYSTEMS_ICC__
#warning Check CPU_BYTE_ORDER
#define CPU_BYTE_ORDER (__BIG_ENDIAN__ ? CPU_BIG_ENDIAN : CPU_LITTLE_ENDIAN)
/* Register counts include SREG too */
#define CPU_REG_BITS (CPU_PPC32 ? 32 : 64)
#define CPU_REGS_CNT FIXME
- #define CPU_SAVED_REGS_CNT FIXME
+ #define CPU_SAVED_REGS_CNT 1 // FIXME
#define CPU_STACK_GROWS_UPWARD 0 //FIXME
#define CPU_SP_ON_EMPTY_SLOT 0 //FIXME
#define CPU_BYTE_ORDER (__BIG_ENDIAN__ ? CPU_BIG_ENDIAN : CPU_LITTLE_ENDIAN)
#define CPU_HARVARD 0
+ /// Valid pointers should be >= than this value (used for debug)
+ #define CPU_RAM_START 0x1000
+
#elif CPU_DSP56K
#define NOP asm(nop)
#define SIZEOF_LONG 2
#define SIZEOF_PTR 1
+ /// Valid pointers should be >= than this value (used for debug)
+ #define CPU_RAM_START 0x200
+
#elif CPU_AVR
#define NOP asm volatile ("nop" ::)
*/
#define CPU_REG_INIT_VALUE(reg) (reg == 0 ? 0x80 : 0)
+ /// Valid pointers should be >= than this value (used for debug)
+ #define CPU_RAM_START 0x100
+
#else
#error No CPU_... defined.
#endif