1*721249b0SArvind Ram Prakash /* 2*721249b0SArvind Ram Prakash * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved. 3*721249b0SArvind Ram Prakash * 4*721249b0SArvind Ram Prakash * SPDX-License-Identifier: BSD-3-Clause 5*721249b0SArvind Ram Prakash */ 6*721249b0SArvind Ram Prakash 7*721249b0SArvind Ram Prakash /* Runtime C routines for errata workarounds and common routines */ 8*721249b0SArvind Ram Prakash 9*721249b0SArvind Ram Prakash #include <arch.h> 10*721249b0SArvind Ram Prakash #include <arch_helpers.h> 11*721249b0SArvind Ram Prakash #include <cortex_a520.h> 12*721249b0SArvind Ram Prakash #include <cortex_x4.h> 13*721249b0SArvind Ram Prakash #include <lib/cpus/cpu_ops.h> 14*721249b0SArvind Ram Prakash #include <lib/cpus/errata.h> 15*721249b0SArvind Ram Prakash 16*721249b0SArvind Ram Prakash #if ERRATA_A520_2938996 || ERRATA_X4_2726228 17*721249b0SArvind Ram Prakash unsigned int check_if_affected_core(void) 18*721249b0SArvind Ram Prakash { 19*721249b0SArvind Ram Prakash uint32_t midr_val = read_midr(); 20*721249b0SArvind Ram Prakash long rev_var = cpu_get_rev_var(); 21*721249b0SArvind Ram Prakash 22*721249b0SArvind Ram Prakash if (EXTRACT_PARTNUM(midr_val) == EXTRACT_PARTNUM(CORTEX_A520_MIDR)) { 23*721249b0SArvind Ram Prakash return check_erratum_cortex_a520_2938996(rev_var); 24*721249b0SArvind Ram Prakash } else if (EXTRACT_PARTNUM(midr_val) == EXTRACT_PARTNUM(CORTEX_X4_MIDR)) { 25*721249b0SArvind Ram Prakash return check_erratum_cortex_x4_2726228(rev_var); 26*721249b0SArvind Ram Prakash } 27*721249b0SArvind Ram Prakash 28*721249b0SArvind Ram Prakash return ERRATA_NOT_APPLIES; 29*721249b0SArvind Ram Prakash } 30*721249b0SArvind Ram Prakash #endif 31