Home | History | Annotate | Download | only in asm
      1 #ifndef __ASM_SECURE_H
      2 #define __ASM_SECURE_H
      3 
      4 #include <config.h>
      5 
      6 #define __secure __attribute__ ((section ("._secure.text")))
      7 #define __secure_data __attribute__ ((section ("._secure.data")))
      8 
      9 #if defined(CONFIG_ARMV7_SECURE_BASE) || defined(CONFIG_ARMV8_SECURE_BASE)
     10 /*
     11  * Warning, horror ahead.
     12  *
     13  * The target code lives in our "secure ram", but u-boot doesn't know
     14  * that, and has blindly added reloc_off to every relocation
     15  * entry. Gahh. Do the opposite conversion. This hack also prevents
     16  * GCC from generating code veeners, which u-boot doesn't relocate at
     17  * all...
     18  */
     19 #define secure_ram_addr(_fn) ({						\
     20 			DECLARE_GLOBAL_DATA_PTR;			\
     21 			void *__fn = _fn;				\
     22 			typeof(_fn) *__tmp = (__fn - gd->reloc_off);	\
     23 			__tmp;						\
     24 		})
     25 #else
     26 #define secure_ram_addr(_fn)	(_fn)
     27 #endif
     28 
     29 #endif
     30