/* Setup Standard Services */ static int32_t std_svc_setup(void) { uintptr_t svc_arg; int ret = 0; svc_arg = get_arm_std_svc_args(PSCI_FID_MASK); assert(svc_arg); /* * PSCI is one of the specifications implemented as a Standard Service. * The `psci_setup()` also does EL3 architectural setup. */ if (psci_setup((const psci_lib_args_t *)svc_arg) != PSCI_E_SUCCESS) { ret = 1; } #if ENABLE_SPM if (spm_setup() != 0) { ret = 1; } #endif #if SDEI_SUPPORT /* SDEI initialisation */ sdei_init(); #endif return ret; }
/****************************************************************************** * The SP_MIN main function. Do the platform and PSCI Library setup. Also * initialize the runtime service framework. *****************************************************************************/ void sp_min_main(void) { /* Perform platform setup in TSP MIN */ sp_min_platform_setup(); /* * Initialize the PSCI library and perform the remaining generic * architectural setup from PSCI. */ psci_setup((uintptr_t)sp_min_warm_entrypoint); /* * Initialize the runtime services e.g. psci * This is where the monitor mode will be initialized */ INFO("SP_MIN: Initializing runtime services\n"); runtime_svc_init(); /* * We are ready to enter the next EL. Prepare entry into the image * corresponding to the desired security state after the next ERET. */ sp_min_prepare_next_image_entry(); }