diff options
author | davidcunado-arm <david.cunado@arm.com> | 2017-11-23 23:50:06 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-23 23:50:06 +0000 |
commit | d162a27ddcb0b1e039f48bfa8111f04c6f290063 (patch) | |
tree | 92c8f7b0bcb70ba35de03f1107d264fe5332ec80 /services | |
parent | 71f8a6a9b0cdfcc773542844e1fcb89ba93bcbf5 (diff) | |
parent | d6b532b50f83b5fe353792fb4b8d91b2191c1850 (diff) |
Merge pull request #1169 from antonio-nino-diaz-arm/an/spm-fixes
SPM fixes
Diffstat (limited to 'services')
-rw-r--r-- | services/std_svc/spm/secure_partition_setup.c | 10 | ||||
-rw-r--r-- | services/std_svc/spm/spm_main.c | 10 |
2 files changed, 11 insertions, 9 deletions
diff --git a/services/std_svc/spm/secure_partition_setup.c b/services/std_svc/spm/secure_partition_setup.c index 67301608..6f4b0571 100644 --- a/services/std_svc/spm/secure_partition_setup.c +++ b/services/std_svc/spm/secure_partition_setup.c @@ -92,20 +92,20 @@ void secure_partition_setup(void) /* 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 = - ((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_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_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_SUPPORTED; @@ -121,7 +121,7 @@ void secure_partition_setup(void) } 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; diff --git a/services/std_svc/spm/spm_main.c b/services/std_svc/spm/spm_main.c index 1b40d81d..de657a2f 100644 --- a/services/std_svc/spm/spm_main.c +++ b/services/std_svc/spm/spm_main.c @@ -431,12 +431,14 @@ uint64_t spm_smc_handler(uint32_t smc_fid, cm_el1_sysregs_context_restore(SECURE); cm_set_next_eret_context(SECURE); - if (x2 != 0) { - VERBOSE("SP_COMMUNICATE_AARCH32/64: X2 is not 0 as recommended."); + /* Cookie. Reserved for future use. It must be zero. */ + 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_fid, x2, x3, plat_my_core_pos()); + SMC_RET4(&sp_ctx.cpu_ctx, smc_fid, x1, x2, x3); case SP_MEM_ATTRIBUTES_GET_AARCH64: case SP_MEM_ATTRIBUTES_SET_AARCH64: |