summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authordavidcunado-arm <david.cunado@arm.com>2017-11-23 23:50:06 +0000
committerGitHub <noreply@github.com>2017-11-23 23:50:06 +0000
commitd162a27ddcb0b1e039f48bfa8111f04c6f290063 (patch)
tree92c8f7b0bcb70ba35de03f1107d264fe5332ec80 /services
parent71f8a6a9b0cdfcc773542844e1fcb89ba93bcbf5 (diff)
parentd6b532b50f83b5fe353792fb4b8d91b2191c1850 (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.c10
-rw-r--r--services/std_svc/spm/spm_main.c10
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: