xref: /openbmc/u-boot/arch/arm/include/asm/secure.h (revision ee7bb5be)
1 #ifndef __ASM_SECURE_H
2 #define __ASM_SECURE_H
3 
4 #include <config.h>
5 
6 #ifdef CONFIG_ARMV7_SECURE_BASE
7 /*
8  * Warning, horror ahead.
9  *
10  * The target code lives in our "secure ram", but u-boot doesn't know
11  * that, and has blindly added reloc_off to every relocation
12  * entry. Gahh. Do the opposite conversion. This hack also prevents
13  * GCC from generating code veeners, which u-boot doesn't relocate at
14  * all...
15  */
16 #define secure_ram_addr(_fn) ({						\
17 			DECLARE_GLOBAL_DATA_PTR;			\
18 			void *__fn = _fn;				\
19 			typeof(_fn) *__tmp = (__fn - gd->reloc_off);	\
20 			__tmp;						\
21 		})
22 #else
23 #define secure_ram_addr(_fn)	(_fn)
24 #endif
25 
26 #endif
27