| #ifndef __ASM_SECURE_H | |
| #define __ASM_SECURE_H | |
| #include <config.h> | |
| #define __secure __attribute__ ((section ("._secure.text"))) | |
| #define __secure_data __attribute__ ((section ("._secure.data"))) | |
| #if defined(CONFIG_ARMV7_SECURE_BASE) || defined(CONFIG_ARMV8_SECURE_BASE) | |
| /* | |
| * Warning, horror ahead. | |
| * | |
| * The target code lives in our "secure ram", but u-boot doesn't know | |
| * that, and has blindly added reloc_off to every relocation | |
| * entry. Gahh. Do the opposite conversion. This hack also prevents | |
| * GCC from generating code veeners, which u-boot doesn't relocate at | |
| * all... | |
| */ | |
| #define secure_ram_addr(_fn) ({ \ | |
| DECLARE_GLOBAL_DATA_PTR; \ | |
| void *__fn = _fn; \ | |
| typeof(_fn) *__tmp = (__fn - gd->reloc_off); \ | |
| __tmp; \ | |
| }) | |
| #else | |
| #define secure_ram_addr(_fn) (_fn) | |
| #endif | |
| #endif |