Commit 4e2887f2 authored by Mark Dykes's avatar Mark Dykes Committed by TrustedFirmware Code Review
Browse files

Merge "Fix SMCCC_ARCH_SOC_ID implementation" into integration

parents 7bf5832c a718c3d6
...@@ -19,20 +19,13 @@ static int32_t smccc_version(void) ...@@ -19,20 +19,13 @@ static int32_t smccc_version(void)
return MAKE_SMCCC_VERSION(SMCCC_MAJOR_VERSION, SMCCC_MINOR_VERSION); return MAKE_SMCCC_VERSION(SMCCC_MAJOR_VERSION, SMCCC_MINOR_VERSION);
} }
static int32_t smccc_arch_features(u_register_t arg1, u_register_t arg2) static int32_t smccc_arch_features(u_register_t arg1)
{ {
switch (arg1) { switch (arg1) {
case SMCCC_VERSION: case SMCCC_VERSION:
case SMCCC_ARCH_FEATURES: case SMCCC_ARCH_FEATURES:
return SMC_OK;
case SMCCC_ARCH_SOC_ID: case SMCCC_ARCH_SOC_ID:
if (arg2 == SMCCC_GET_SOC_REVISION) { return SMC_OK;
return plat_get_soc_revision();
}
if (arg2 == SMCCC_GET_SOC_VERSION) {
return plat_get_soc_version();
}
return SMC_ARCH_CALL_INVAL_PARAM;
#if WORKAROUND_CVE_2017_5715 #if WORKAROUND_CVE_2017_5715
case SMCCC_ARCH_WORKAROUND_1: case SMCCC_ARCH_WORKAROUND_1:
if (check_wa_cve_2017_5715() == ERRATA_NOT_APPLIES) if (check_wa_cve_2017_5715() == ERRATA_NOT_APPLIES)
...@@ -87,6 +80,19 @@ static int32_t smccc_arch_features(u_register_t arg1, u_register_t arg2) ...@@ -87,6 +80,19 @@ static int32_t smccc_arch_features(u_register_t arg1, u_register_t arg2)
} }
} }
/* return soc revision or soc version on success otherwise
* return invalid parameter */
static int32_t smccc_arch_id(u_register_t arg1)
{
if (arg1 == SMCCC_GET_SOC_REVISION) {
return plat_get_soc_revision();
}
if (arg1 == SMCCC_GET_SOC_VERSION) {
return plat_get_soc_version();
}
return SMC_ARCH_CALL_INVAL_PARAM;
}
/* /*
* Top-level Arm Architectural Service SMC handler. * Top-level Arm Architectural Service SMC handler.
*/ */
...@@ -103,7 +109,9 @@ static uintptr_t arm_arch_svc_smc_handler(uint32_t smc_fid, ...@@ -103,7 +109,9 @@ static uintptr_t arm_arch_svc_smc_handler(uint32_t smc_fid,
case SMCCC_VERSION: case SMCCC_VERSION:
SMC_RET1(handle, smccc_version()); SMC_RET1(handle, smccc_version());
case SMCCC_ARCH_FEATURES: case SMCCC_ARCH_FEATURES:
SMC_RET1(handle, smccc_arch_features(x1, x2)); SMC_RET1(handle, smccc_arch_features(x1));
case SMCCC_ARCH_SOC_ID:
SMC_RET1(handle, smccc_arch_id(x1));
#if WORKAROUND_CVE_2017_5715 #if WORKAROUND_CVE_2017_5715
case SMCCC_ARCH_WORKAROUND_1: case SMCCC_ARCH_WORKAROUND_1:
/* /*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment