arch: arm: Fix MMU disable function

Use dsb barrier before disabling the mmu to ensure all memory
accesses have completed. Also as per arm reference manual use
isb & dsb barriers for tlb invalidate & mmu enable, disable
functions.

CRs-Fixed: 514600
Change-Id: I7f9a041189cbf87c9b41ebefba07893b2798f037
diff --git a/arch/arm/mmu.c b/arch/arm/mmu.c
index 3fc61bf..2027b41 100644
--- a/arch/arm/mmu.c
+++ b/arch/arm/mmu.c
@@ -25,6 +25,7 @@
 #include <compiler.h>
 #include <arch.h>
 #include <arch/arm.h>
+#include <arch/defines.h>
 #include <arch/arm/mmu.h>
 
 #if ARM_WITH_MMU
@@ -94,6 +95,10 @@
 
 void arch_disable_mmu(void)
 {
+	/* Ensure all memory access are complete
+	 * before disabling MMU
+	 */
+	dsb();
 	arm_write_cr1(arm_read_cr1() & ~(1<<0));
 	arm_invalidate_tlb();
 }