Browse Source
Pull out common code from aarch64 and include Signed-off-by: Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com> Change-Id: I4d0f5e1bb01bcdacbedf8e6c359de594239b645fpull/1932/head
Hadi Asyrafi
5 years ago
committed by
Sandrine Bailleux
21 changed files with 21 additions and 266 deletions
@ -1,121 +0,0 @@ |
|||||
/* |
|
||||
* Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. |
|
||||
* |
|
||||
* SPDX-License-Identifier: BSD-3-Clause |
|
||||
*/ |
|
||||
|
|
||||
#include <arch.h> |
|
||||
#include <asm_macros.S> |
|
||||
#include <cpu_macros.S> |
|
||||
#include <platform_def.h> |
|
||||
|
|
||||
.globl plat_secondary_cold_boot_setup |
|
||||
.globl platform_is_primary_cpu |
|
||||
.globl plat_is_my_cpu_primary |
|
||||
.globl plat_my_core_pos |
|
||||
.globl plat_crash_console_init |
|
||||
.globl plat_crash_console_putc |
|
||||
.globl plat_crash_console_flush |
|
||||
.globl platform_mem_init |
|
||||
|
|
||||
.globl plat_get_my_entrypoint |
|
||||
|
|
||||
/* ----------------------------------------------------- |
|
||||
* void plat_secondary_cold_boot_setup (void); |
|
||||
* |
|
||||
* This function performs any platform specific actions |
|
||||
* needed for a secondary cpu after a cold reset e.g |
|
||||
* mark the cpu's presence, mechanism to place it in a |
|
||||
* holding pen etc. |
|
||||
* ----------------------------------------------------- |
|
||||
*/ |
|
||||
func plat_secondary_cold_boot_setup |
|
||||
/* Wait until the it gets reset signal from rstmgr gets populated */ |
|
||||
poll_mailbox: |
|
||||
wfi |
|
||||
|
|
||||
mov_imm x0, PLAT_S10_SEC_ENTRY |
|
||||
ldr x1, [x0] |
|
||||
mov_imm x2, PLAT_CPUID_RELEASE |
|
||||
ldr x3, [x2] |
|
||||
mrs x4, mpidr_el1 |
|
||||
and x4, x4, #0xff |
|
||||
cmp x3, x4 |
|
||||
b.ne poll_mailbox |
|
||||
br x1 |
|
||||
endfunc plat_secondary_cold_boot_setup |
|
||||
|
|
||||
func platform_is_primary_cpu |
|
||||
and x0, x0, #(MPIDR_CLUSTER_MASK | MPIDR_CPU_MASK) |
|
||||
cmp x0, #PLAT_PRIMARY_CPU |
|
||||
cset x0, eq |
|
||||
ret |
|
||||
endfunc platform_is_primary_cpu |
|
||||
|
|
||||
func plat_is_my_cpu_primary |
|
||||
mrs x0, mpidr_el1 |
|
||||
b platform_is_primary_cpu |
|
||||
endfunc plat_is_my_cpu_primary |
|
||||
|
|
||||
func plat_my_core_pos |
|
||||
mrs x0, mpidr_el1 |
|
||||
and x1, x0, #MPIDR_CPU_MASK |
|
||||
and x0, x0, #MPIDR_CLUSTER_MASK |
|
||||
add x0, x1, x0, LSR #6 |
|
||||
ret |
|
||||
endfunc plat_my_core_pos |
|
||||
|
|
||||
func plat_get_my_entrypoint |
|
||||
mov_imm x1, PLAT_S10_SEC_ENTRY |
|
||||
ldr x0, [x1] |
|
||||
ret |
|
||||
endfunc plat_get_my_entrypoint |
|
||||
|
|
||||
/* --------------------------------------------- |
|
||||
* int plat_crash_console_init(void) |
|
||||
* Function to initialize the crash console |
|
||||
* without a C Runtime to print crash report. |
|
||||
* Clobber list : x0, x1, x2 |
|
||||
* --------------------------------------------- |
|
||||
*/ |
|
||||
func plat_crash_console_init |
|
||||
mov_imm x0, PLAT_UART0_BASE |
|
||||
mov_imm x1, PLAT_UART_CLOCK |
|
||||
mov_imm x2, PLAT_BAUDRATE |
|
||||
b console_16550_core_init |
|
||||
endfunc plat_crash_console_init |
|
||||
|
|
||||
/* --------------------------------------------- |
|
||||
* int plat_crash_console_putc(void) |
|
||||
* Function to print a character on the crash |
|
||||
* console without a C Runtime. |
|
||||
* Clobber list : x1, x2 |
|
||||
* --------------------------------------------- |
|
||||
*/ |
|
||||
func plat_crash_console_putc |
|
||||
mov_imm x1, PLAT_UART0_BASE |
|
||||
b console_16550_core_putc |
|
||||
endfunc plat_crash_console_putc |
|
||||
|
|
||||
func plat_crash_console_flush |
|
||||
mov_imm x0, CRASH_CONSOLE_BASE |
|
||||
b console_16550_core_flush |
|
||||
endfunc plat_crash_console_flush |
|
||||
|
|
||||
|
|
||||
/* -------------------------------------------------------- |
|
||||
* void platform_mem_init (void); |
|
||||
* |
|
||||
* Any memory init, relocation to be done before the |
|
||||
* platform boots. Called very early in the boot process. |
|
||||
* -------------------------------------------------------- |
|
||||
*/ |
|
||||
func platform_mem_init |
|
||||
mov x0, #0 |
|
||||
ret |
|
||||
endfunc platform_mem_init |
|
||||
|
|
||||
|
|
||||
.data |
|
||||
.align 3 |
|
||||
|
|
@ -1,57 +0,0 @@ |
|||||
/*
|
|
||||
* Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. |
|
||||
* |
|
||||
* SPDX-License-Identifier: BSD-3-Clause |
|
||||
*/ |
|
||||
|
|
||||
#include <arch_helpers.h> |
|
||||
#include <lib/xlat_tables/xlat_tables.h> |
|
||||
#include <lib/mmio.h> |
|
||||
#include <platform_def.h> |
|
||||
|
|
||||
unsigned int plat_get_syscnt_freq2(void) |
|
||||
{ |
|
||||
return PLAT_SYS_COUNTER_FREQ_IN_TICKS; |
|
||||
} |
|
||||
|
|
||||
unsigned long plat_get_ns_image_entrypoint(void) |
|
||||
{ |
|
||||
return PLAT_NS_IMAGE_OFFSET; |
|
||||
} |
|
||||
|
|
||||
/******************************************************************************
|
|
||||
* Gets SPSR for BL32 entry |
|
||||
*****************************************************************************/ |
|
||||
uint32_t plat_get_spsr_for_bl32_entry(void) |
|
||||
{ |
|
||||
/*
|
|
||||
* The Secure Payload Dispatcher service is responsible for |
|
||||
* setting the SPSR prior to entry into the BL32 image. |
|
||||
*/ |
|
||||
return 0; |
|
||||
} |
|
||||
|
|
||||
/******************************************************************************
|
|
||||
* Gets SPSR for BL33 entry |
|
||||
*****************************************************************************/ |
|
||||
uint32_t plat_get_spsr_for_bl33_entry(void) |
|
||||
{ |
|
||||
unsigned long el_status; |
|
||||
unsigned int mode; |
|
||||
uint32_t spsr; |
|
||||
|
|
||||
/* Figure out what mode we enter the non-secure world in */ |
|
||||
el_status = read_id_aa64pfr0_el1() >> ID_AA64PFR0_EL2_SHIFT; |
|
||||
el_status &= ID_AA64PFR0_ELX_MASK; |
|
||||
|
|
||||
mode = (el_status) ? MODE_EL2 : MODE_EL1; |
|
||||
|
|
||||
/*
|
|
||||
* TODO: Consider the possibility of specifying the SPSR in |
|
||||
* the FIP ToC and allowing the platform to have a say as |
|
||||
* well. |
|
||||
*/ |
|
||||
spsr = SPSR_64(mode, MODE_SP_ELX, DISABLE_ALL_EXCEPTIONS); |
|
||||
return spsr; |
|
||||
} |
|
||||
|
|
@ -1,22 +0,0 @@ |
|||||
/* |
|
||||
* Copyright (c) 2019, Intel Corporation. All rights reserved. |
|
||||
* |
|
||||
* SPDX-License-Identifier: BSD-3-Clause |
|
||||
*/ |
|
||||
|
|
||||
#ifndef __PLAT_MACROS_S__ |
|
||||
#define __PLAT_MACROS_S__ |
|
||||
|
|
||||
#include <platform_def.h> |
|
||||
|
|
||||
/* --------------------------------------------- |
|
||||
* The below required platform porting macro |
|
||||
* prints out relevant platform registers |
|
||||
* whenever an unhandled exception is taken in |
|
||||
* BL31. |
|
||||
* --------------------------------------------- |
|
||||
*/ |
|
||||
.macro plat_crash_print_regs |
|
||||
.endm |
|
||||
|
|
||||
#endif /* __PLAT_MACROS_S__ */ |
|
@ -1,41 +0,0 @@ |
|||||
/*
|
|
||||
* Copyright (c) 2019, Intel Corporation. All rights reserved. |
|
||||
* |
|
||||
* SPDX-License-Identifier: BSD-3-Clause |
|
||||
*/ |
|
||||
|
|
||||
#ifndef __PLATFORM_PRIVATE_H__ |
|
||||
#define __PLATFORM_PRIVATE_H__ |
|
||||
#include <common/bl_common.h> |
|
||||
|
|
||||
/*******************************************************************************
|
|
||||
* Function and variable prototypes |
|
||||
******************************************************************************/ |
|
||||
void plat_configure_mmu_el3(unsigned long total_base, |
|
||||
unsigned long total_size, |
|
||||
unsigned long ro_start, |
|
||||
unsigned long ro_limit, |
|
||||
unsigned long coh_start, |
|
||||
unsigned long coh_limit); |
|
||||
|
|
||||
|
|
||||
void plat_configure_mmu_el1(unsigned long total_base, |
|
||||
unsigned long total_size, |
|
||||
unsigned long ro_start, |
|
||||
unsigned long ro_limit, |
|
||||
unsigned long coh_start, |
|
||||
unsigned long coh_limit); |
|
||||
|
|
||||
void plat_gic_driver_init(void); |
|
||||
|
|
||||
void plat_arm_gic_init(void); |
|
||||
|
|
||||
void plat_delay_timer_init(void); |
|
||||
|
|
||||
unsigned long plat_get_ns_image_entrypoint(void); |
|
||||
|
|
||||
uint32_t plat_get_spsr_for_bl32_entry(void); |
|
||||
|
|
||||
uint32_t plat_get_spsr_for_bl33_entry(void); |
|
||||
|
|
||||
#endif /* __PLATFORM_PRIVATE_H__ */ |
|
Loading…
Reference in new issue