blob: e25f0c75ce0df91d6371eeab97f6c76736e2a7cd [file] [log] [blame]
/*
* init.c - common boot-wrapper initialization
*
* Copyright (C) 2021 ARM Limited. All rights reserved.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE.txt file.
*/
#include <cpu.h>
#include <platform.h>
#include <stdbool.h>
static const char *mode_string(void)
{
switch (read_cpsr_mode()) {
case PSR_MON:
return "PL1";
case PSR_HYP:
return "PL2 (Non-secure)";
default:
return "<UNKNOWN MODE>";
}
}
void announce_arch(void)
{
print_string("Entered at ");
print_string(mode_string());
print_string("\r\n");
}
void cpu_init_secure_pl1(void)
{
unsigned long scr = SCR_NS | SCR_HCE;
unsigned long nsacr = NSACR_CP10 | NSACR_CP11;
mcr(SCR, scr);
mcr(NSACR, nsacr);
mcr(CNTFRQ, COUNTER_FREQ);
}
#ifdef PSCI
extern char psci_vectors[];
bool cpu_init_psci_arch(void)
{
if (read_cpsr_mode() != PSR_MON)
return false;
mcr(MVBAR, (unsigned long)psci_vectors);
isb();
return true;
}
#endif