/* * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef __CACTUS_H__ #define __CACTUS_H__ #include #include /* Linker symbols used to figure out the memory layout of Cactus. */ extern uintptr_t __TEXT_START__, __TEXT_END__; #define CACTUS_TEXT_START ((uintptr_t)&__TEXT_START__) #define CACTUS_TEXT_END ((uintptr_t)&__TEXT_END__) extern uintptr_t __RODATA_START__, __RODATA_END__; #define CACTUS_RODATA_START ((uintptr_t)&__RODATA_START__) #define CACTUS_RODATA_END ((uintptr_t)&__RODATA_END__) extern uintptr_t __RWDATA_START__, __RWDATA_END__; #define CACTUS_RWDATA_START ((uintptr_t)&__RWDATA_START__) #define CACTUS_RWDATA_END ((uintptr_t)&__RWDATA_END__) extern uintptr_t __BSS_START__, __BSS_END__; #define CACTUS_BSS_START ((uintptr_t)&__BSS_START__) #define CACTUS_BSS_END ((uintptr_t)&__BSS_END__) /* * Once Cactus has finished its initialisation, this is the function it will * jump to to handle runtime services for the rest of its lifetime. */ __dead2 void secure_services_loop(void); #endif /* __CACTUS_H__ */