Unverified Commit d162a27d authored by davidcunado-arm's avatar davidcunado-arm Committed by GitHub
Browse files

Merge pull request #1169 from antonio-nino-diaz-arm/an/spm-fixes

SPM fixes
parents 71f8a6a9 d6b532b5
...@@ -92,20 +92,20 @@ void secure_partition_setup(void) ...@@ -92,20 +92,20 @@ void secure_partition_setup(void)
/* Get max granularity supported by the platform. */ /* Get max granularity supported by the platform. */
u_register_t id_aa64prf0_el1 = read_id_aa64pfr0_el1(); u_register_t id_aa64mmfr0_el1 = read_id_aa64mmfr0_el1();
int tgran64_supported = int tgran64_supported =
((id_aa64prf0_el1 >> ID_AA64MMFR0_EL1_TGRAN64_SHIFT) & ((id_aa64mmfr0_el1 >> ID_AA64MMFR0_EL1_TGRAN64_SHIFT) &
ID_AA64MMFR0_EL1_TGRAN64_MASK) == ID_AA64MMFR0_EL1_TGRAN64_MASK) ==
ID_AA64MMFR0_EL1_TGRAN64_SUPPORTED; ID_AA64MMFR0_EL1_TGRAN64_SUPPORTED;
int tgran16_supported = int tgran16_supported =
((id_aa64prf0_el1 >> ID_AA64MMFR0_EL1_TGRAN16_SHIFT) & ((id_aa64mmfr0_el1 >> ID_AA64MMFR0_EL1_TGRAN16_SHIFT) &
ID_AA64MMFR0_EL1_TGRAN16_MASK) == ID_AA64MMFR0_EL1_TGRAN16_MASK) ==
ID_AA64MMFR0_EL1_TGRAN16_SUPPORTED; ID_AA64MMFR0_EL1_TGRAN16_SUPPORTED;
int tgran4_supported = int tgran4_supported =
((id_aa64prf0_el1 >> ID_AA64MMFR0_EL1_TGRAN4_SHIFT) & ((id_aa64mmfr0_el1 >> ID_AA64MMFR0_EL1_TGRAN4_SHIFT) &
ID_AA64MMFR0_EL1_TGRAN4_MASK) == ID_AA64MMFR0_EL1_TGRAN4_MASK) ==
ID_AA64MMFR0_EL1_TGRAN4_SUPPORTED; ID_AA64MMFR0_EL1_TGRAN4_SUPPORTED;
...@@ -121,7 +121,7 @@ void secure_partition_setup(void) ...@@ -121,7 +121,7 @@ void secure_partition_setup(void)
} }
VERBOSE("Max translation granule supported: %lu KiB\n", VERBOSE("Max translation granule supported: %lu KiB\n",
max_granule_size); max_granule_size / 1024);
uintptr_t max_granule_size_mask = max_granule_size - 1; uintptr_t max_granule_size_mask = max_granule_size - 1;
......
...@@ -431,12 +431,14 @@ uint64_t spm_smc_handler(uint32_t smc_fid, ...@@ -431,12 +431,14 @@ uint64_t spm_smc_handler(uint32_t smc_fid,
cm_el1_sysregs_context_restore(SECURE); cm_el1_sysregs_context_restore(SECURE);
cm_set_next_eret_context(SECURE); cm_set_next_eret_context(SECURE);
if (x2 != 0) { /* Cookie. Reserved for future use. It must be zero. */
VERBOSE("SP_COMMUNICATE_AARCH32/64: X2 is not 0 as recommended."); assert(x1 == 0);
if (x3 != 0) {
VERBOSE("SP_COMMUNICATE_AARCH32/64: X3 is not 0 as recommended.\n");
} }
SMC_RET4(&sp_ctx.cpu_ctx, SMC_RET4(&sp_ctx.cpu_ctx, smc_fid, x1, x2, x3);
smc_fid, x2, x3, plat_my_core_pos());
case SP_MEM_ATTRIBUTES_GET_AARCH64: case SP_MEM_ATTRIBUTES_GET_AARCH64:
case SP_MEM_ATTRIBUTES_SET_AARCH64: case SP_MEM_ATTRIBUTES_SET_AARCH64:
......
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