mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 09:34:18 +00:00
feat(cpus): add support for chaberton cpu
Add basic CPU library code to support the Chaberton CPU, Chaberton cores are based out of Hunter core, so overall library code was adapted based on that. Change-Id: I58321c77f2c364225a764da6fa65656d1bec33f1 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
This commit is contained in:
parent
42fb812a75
commit
516a52f6f5
3 changed files with 102 additions and 1 deletions
23
include/lib/cpus/aarch64/cortex_chaberton.h
Normal file
23
include/lib/cpus/aarch64/cortex_chaberton.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef CORTEX_CHABERTON_H
|
||||
#define CORTEX_CHABERTON_H
|
||||
|
||||
#define CORTEX_CHABERTON_MIDR U(0x410FD870)
|
||||
|
||||
/*******************************************************************************
|
||||
* CPU Extended Control register specific definitions
|
||||
******************************************************************************/
|
||||
#define CORTEX_CHABERTON_CPUECTLR_EL1 S3_0_C15_C1_4
|
||||
|
||||
/*******************************************************************************
|
||||
* CPU Power Control register specific definitions
|
||||
******************************************************************************/
|
||||
#define CORTEX_CHABERTON_CPUPWRCTLR_EL1 S3_0_C15_C2_7
|
||||
#define CORTEX_CHABERTON_CPUPWRCTLR_EL1_CORE_PWRDN_BIT U(1)
|
||||
|
||||
#endif /* CORTEX_CHABERTON_H */
|
77
lib/cpus/aarch64/cortex_chaberton.S
Normal file
77
lib/cpus/aarch64/cortex_chaberton.S
Normal file
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <arch.h>
|
||||
#include <asm_macros.S>
|
||||
#include <common/bl_common.h>
|
||||
#include <cortex_chaberton.h>
|
||||
#include <cpu_macros.S>
|
||||
#include <plat_macros.S>
|
||||
|
||||
/* Hardware handled coherency */
|
||||
#if HW_ASSISTED_COHERENCY == 0
|
||||
#error "Cortex Chaberton must be compiled with HW_ASSISTED_COHERENCY enabled"
|
||||
#endif
|
||||
|
||||
/* 64-bit only core */
|
||||
#if CTX_INCLUDE_AARCH32_REGS == 1
|
||||
#error "Cortex Chaberton supports only AArch64. Compile with CTX_INCLUDE_AARCH32_REGS=0"
|
||||
#endif
|
||||
|
||||
func cortex_chaberton_reset_func
|
||||
/* Disable speculative loads */
|
||||
msr SSBS, xzr
|
||||
isb
|
||||
ret
|
||||
endfunc cortex_chaberton_reset_func
|
||||
|
||||
/* ----------------------------------------------------
|
||||
* HW will do the cache maintenance while powering down
|
||||
* ----------------------------------------------------
|
||||
*/
|
||||
func cortex_chaberton_core_pwr_dwn
|
||||
/* ---------------------------------------------------
|
||||
* Enable CPU power down bit in power control register
|
||||
* ---------------------------------------------------
|
||||
*/
|
||||
mrs x0, CORTEX_CHABERTON_CPUPWRCTLR_EL1
|
||||
orr x0, x0, #CORTEX_CHABERTON_CPUPWRCTLR_EL1_CORE_PWRDN_BIT
|
||||
msr CORTEX_CHABERTON_CPUPWRCTLR_EL1, x0
|
||||
isb
|
||||
ret
|
||||
endfunc cortex_chaberton_core_pwr_dwn
|
||||
|
||||
#if REPORT_ERRATA
|
||||
/*
|
||||
* Errata printing function for Cortex Chaberton. Must follow AAPCS.
|
||||
*/
|
||||
func cortex_chaberton_errata_report
|
||||
ret
|
||||
endfunc cortex_chaberton_errata_report
|
||||
#endif
|
||||
|
||||
/* ---------------------------------------------
|
||||
* This function provides Cortex Chaberton specific
|
||||
* register information for crash reporting.
|
||||
* It needs to return with x6 pointing to
|
||||
* a list of register names in ascii and
|
||||
* x8 - x15 having values of registers to be
|
||||
* reported.
|
||||
* ---------------------------------------------
|
||||
*/
|
||||
.section .rodata.cortex_chaberton_regs, "aS"
|
||||
cortex_chaberton_regs: /* The ascii list of register names to be reported */
|
||||
.asciz "cpuectlr_el1", ""
|
||||
|
||||
func cortex_chaberton_cpu_reg_dump
|
||||
adr x6, cortex_chaberton_regs
|
||||
mrs x8, CORTEX_CHABERTON_CPUECTLR_EL1
|
||||
ret
|
||||
endfunc cortex_chaberton_cpu_reg_dump
|
||||
|
||||
declare_cpu_ops cortex_chaberton, CORTEX_CHABERTON_MIDR, \
|
||||
cortex_chaberton_reset_func, \
|
||||
cortex_chaberton_core_pwr_dwn
|
|
@ -198,7 +198,8 @@ else
|
|||
lib/cpus/aarch64/cortex_hunter.S \
|
||||
lib/cpus/aarch64/cortex_hunter_elp_arm.S \
|
||||
lib/cpus/aarch64/cortex_x2.S \
|
||||
lib/cpus/aarch64/neoverse_poseidon.S
|
||||
lib/cpus/aarch64/neoverse_poseidon.S \
|
||||
lib/cpus/aarch64/cortex_chaberton.S
|
||||
endif
|
||||
# AArch64/AArch32 cores
|
||||
FVP_CPU_LIBS += lib/cpus/aarch64/cortex_a55.S \
|
||||
|
|
Loading…
Add table
Reference in a new issue