diff --git a/lib/xlat_tables_v2/aarch32/xlat_tables_arch.c b/lib/xlat_tables_v2/aarch32/xlat_tables_arch.c
index 6eb1d2c..2f71110 100644
--- a/lib/xlat_tables_v2/aarch32/xlat_tables_arch.c
+++ b/lib/xlat_tables_v2/aarch32/xlat_tables_arch.c
@@ -18,8 +18,6 @@
 #error ARMv7 target does not support LPAE MMU descriptors
 #endif
 
-uint64_t mmu_cfg_params[MMU_CFG_PARAM_MAX];
-
 /*
  * Returns 1 if the provided granule size is supported, 0 otherwise.
  */
@@ -109,9 +107,9 @@
  * Function for enabling the MMU in Secure PL1, assuming that the page tables
  * have already been created.
  ******************************************************************************/
-void setup_mmu_cfg(unsigned int flags, const uint64_t *base_table,
-		   unsigned long long max_pa, uintptr_t max_va,
-		   __unused int xlat_regime)
+void setup_mmu_cfg(uint64_t *params, unsigned int flags,
+		   const uint64_t *base_table, unsigned long long max_pa,
+		   uintptr_t max_va, __unused int xlat_regime)
 {
 	uint64_t mair, ttbr0;
 	uint32_t ttbcr;
@@ -180,7 +178,7 @@
 #endif
 
 	/* Now populate MMU configuration */
-	mmu_cfg_params[MMU_CFG_MAIR] = mair;
-	mmu_cfg_params[MMU_CFG_TCR] = (uint64_t) ttbcr;
-	mmu_cfg_params[MMU_CFG_TTBR0] = ttbr0;
+	params[MMU_CFG_MAIR] = mair;
+	params[MMU_CFG_TCR] = (uint64_t) ttbcr;
+	params[MMU_CFG_TTBR0] = ttbr0;
 }
diff --git a/lib/xlat_tables_v2/aarch64/xlat_tables_arch.c b/lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
index 06628db..0f289e2 100644
--- a/lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
+++ b/lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
@@ -13,8 +13,6 @@
 #include <xlat_tables_v2.h>
 #include "../xlat_tables_private.h"
 
-uint64_t mmu_cfg_params[MMU_CFG_PARAM_MAX];
-
 /*
  * Returns 1 if the provided granule size is supported, 0 otherwise.
  */
@@ -180,8 +178,9 @@
 	return el;
 }
 
-void setup_mmu_cfg(unsigned int flags, const uint64_t *base_table,
-		   unsigned long long max_pa, uintptr_t max_va, int xlat_regime)
+void setup_mmu_cfg(uint64_t *params, unsigned int flags,
+		   const uint64_t *base_table, unsigned long long max_pa,
+		   uintptr_t max_va, int xlat_regime)
 {
 	uint64_t mair, ttbr0, tcr;
 	uintptr_t virtual_addr_space_size;
@@ -248,7 +247,7 @@
 	ttbr0 |= TTBR_CNP_BIT;
 #endif
 
-	mmu_cfg_params[MMU_CFG_MAIR] = mair;
-	mmu_cfg_params[MMU_CFG_TCR] = tcr;
-	mmu_cfg_params[MMU_CFG_TTBR0] = ttbr0;
+	params[MMU_CFG_MAIR] = mair;
+	params[MMU_CFG_TCR] = tcr;
+	params[MMU_CFG_TTBR0] = ttbr0;
 }
diff --git a/lib/xlat_tables_v2/xlat_tables_context.c b/lib/xlat_tables_v2/xlat_tables_context.c
index 671d894..76c429d 100644
--- a/lib/xlat_tables_v2/xlat_tables_context.c
+++ b/lib/xlat_tables_v2/xlat_tables_context.c
@@ -13,6 +13,12 @@
 #include "xlat_tables_private.h"
 
 /*
+ * MMU configuration register values for the active translation context. Used
+ * from the MMU assembly helpers.
+ */
+uint64_t mmu_cfg_params[MMU_CFG_PARAM_MAX];
+
+/*
  * Each platform can define the size of its physical and virtual address spaces.
  * If the platform hasn't defined one or both of them, default to
  * ADDR_SPACE_SIZE. The latter is deprecated, though.
@@ -105,7 +111,8 @@
 
 void enable_mmu_secure(unsigned int flags)
 {
-	setup_mmu_cfg(flags, tf_xlat_ctx.base_table, MAX_PHYS_ADDR,
+	setup_mmu_cfg((uint64_t *)&mmu_cfg_params, flags,
+		      tf_xlat_ctx.base_table, MAX_PHYS_ADDR,
 		      tf_xlat_ctx.va_max_address, EL1_EL0_REGIME);
 	enable_mmu_direct(flags);
 }
@@ -114,14 +121,16 @@
 
 void enable_mmu_el1(unsigned int flags)
 {
-	setup_mmu_cfg(flags, tf_xlat_ctx.base_table, MAX_PHYS_ADDR,
+	setup_mmu_cfg((uint64_t *)&mmu_cfg_params, flags,
+		      tf_xlat_ctx.base_table, MAX_PHYS_ADDR,
 		      tf_xlat_ctx.va_max_address, EL1_EL0_REGIME);
 	enable_mmu_direct_el1(flags);
 }
 
 void enable_mmu_el3(unsigned int flags)
 {
-	setup_mmu_cfg(flags, tf_xlat_ctx.base_table, MAX_PHYS_ADDR,
+	setup_mmu_cfg((uint64_t *)&mmu_cfg_params, flags,
+		      tf_xlat_ctx.base_table, MAX_PHYS_ADDR,
 		      tf_xlat_ctx.va_max_address, EL3_REGIME);
 	enable_mmu_direct_el3(flags);
 }
diff --git a/lib/xlat_tables_v2/xlat_tables_private.h b/lib/xlat_tables_v2/xlat_tables_private.h
index fa770db..93640dd 100644
--- a/lib/xlat_tables_v2/xlat_tables_private.h
+++ b/lib/xlat_tables_v2/xlat_tables_private.h
@@ -88,11 +88,6 @@
  */
 unsigned long long xlat_arch_get_max_supported_pa(void);
 
-/* Enable MMU and configure it to use the specified translation tables. */
-void setup_mmu_cfg(unsigned int flags, const uint64_t *base_table,
-		   unsigned long long max_pa, uintptr_t max_va,
-		   int xlat_regime);
-
 /*
  * Return 1 if the MMU of the translation regime managed by the given xlat_ctx_t
  * is enabled, 0 otherwise.
