summaryrefslogtreecommitdiff
path: root/lib/xlat_tables_v2/xlat_tables_private.h
diff options
context:
space:
mode:
authorDouglas Raillard <douglas.raillard@arm.com>2017-09-25 15:23:22 +0100
committerAntonio Nino Diaz <antonio.ninodiaz@arm.com>2017-10-05 14:32:12 +0100
commitb4ae615bd734104cfed5d2534b4c14278415057e (patch)
tree05fb8fa40e5d0aac193111bc2055b752395b535b /lib/xlat_tables_v2/xlat_tables_private.h
parentf301da44fa233bbde2e457b64aa7903623c53586 (diff)
xlat: Introduce function xlat_arch_tlbi_va_regime()
Introduce a variant of the TLB invalidation helper function that allows the targeted translation regime to be specified, rather than defaulting to the current one. This new function is useful in the context of EL3 software managing translation tables for the S-EL1&0 translation regime, as then it might need to invalidate S-EL1&0 TLB entries rather than EL3 ones. Define a new enumeration to be able to represent translation regimes in the xlat tables library. Change-Id: Ibe4438dbea2d7a6e7470bfb68ff805d8bf6b07e5 Co-authored-by: Sandrine Bailleux <sandrine.bailleux@arm.com> Co-authored-by: Douglas Raillard <douglas.raillard@arm.com> Co-authored-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com> Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Diffstat (limited to 'lib/xlat_tables_v2/xlat_tables_private.h')
-rw-r--r--lib/xlat_tables_v2/xlat_tables_private.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/xlat_tables_v2/xlat_tables_private.h b/lib/xlat_tables_v2/xlat_tables_private.h
index fbd9578a..2730ab6c 100644
--- a/lib/xlat_tables_v2/xlat_tables_private.h
+++ b/lib/xlat_tables_v2/xlat_tables_private.h
@@ -37,11 +37,21 @@ typedef enum {
#endif /* PLAT_XLAT_TABLES_DYNAMIC */
/*
- * Function used to invalidate all levels of the translation walk for a given
- * virtual address. It must be called for every translation table entry that is
- * modified.
+ * Invalidate all TLB entries that match the given virtual address. This
+ * operation applies to all PEs in the same Inner Shareable domain as the PE
+ * that executes this function. This functions must be called for every
+ * translation table entry that is modified.
+ *
+ * xlat_arch_tlbi_va() applies the invalidation to the exception level of the
+ * current translation regime, whereas xlat_arch_tlbi_va_regime() applies it to
+ * the given translation regime.
+ *
+ * Note, however, that it is architecturally UNDEFINED to invalidate TLB entries
+ * pertaining to a higher exception level, e.g. invalidating EL3 entries from
+ * S-EL1.
*/
void xlat_arch_tlbi_va(uintptr_t va);
+void xlat_arch_tlbi_va_regime(uintptr_t va, xlat_regime_t xlat_regime);
/*
* This function has to be called at the end of any code that uses the function