introduce UNREACHABLE() macro.
[bertos.git] / bertos / cpu / attr.h
index c6d8373484d300c7f3c6deded36c9ff993da9629..dae231ffa673a158e17dcfe4beb2beee1dc452e9 100644 (file)
@@ -42,6 +42,7 @@
 
 #include "detect.h"
 
+#include "cfg/cfg_proc.h"      /* CONFIG_KERN_PREEMPT */
 #include "cfg/cfg_attr.h"      /* CONFIG_FAST_MEM */
 
 
@@ -94,6 +95,8 @@
 
        #ifdef __GNUC__
                #define NOP         asm volatile ("nop")
+               /* This is a good thing to insert into busy-wait loops. */
+               #define PAUSE       asm volatile ("rep; nop" ::: "memory")
                #define BREAKPOINT  asm volatile ("int3" ::)
        #endif
 
        /// Valid pointers should be >= than this value (used for debug)
        #if CPU_ARM_AT91
                #define CPU_RAM_START           0x00200000
+       #elif CPU_ARM_LM3S1968
+               #define CPU_RAM_START           0x20000000
        #else
                #warning Fix CPU_RAM_START address for your ARM, default value set to 0x200
                #define CPU_RAM_START           0x200
                        #define FAST_FUNC /**/
                #endif
 
-               /**
-                * Function attribute to declare an interrupt service routine.
-                */
-               #define ISR_FUNC __attribute__((interrupt))
-
                /*
                 * Function attribute to move it into ram memory.
                 */
        /// Valid pointers should be >= than this value (used for debug)
        #if CPU_AVR_ATMEGA8 || CPU_AVR_ATMEGA32 || CPU_AVR_ATMEGA103
                #define CPU_RAM_START       0x60
-       #elif CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA168
+       #elif CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P
                #define CPU_RAM_START       0x100
        #elif CPU_AVR_ATMEGA1281
                #define CPU_RAM_START       0x200
        #define FAST_RODATA /* */
 #endif
 
+#ifndef PAUSE
+       /// Generic PAUSE implementation.
+       #define PAUSE   {NOP; MEMORY_BARRIER;}
+#endif
+
 #endif /* CPU_ATTR_H */