arvm7m: add cleanup before linux booting
authorVikas Manocha <vikas.manocha@st.com>
Wed, 3 May 2017 22:48:26 +0000 (15:48 -0700)
committerTom Rini <trini@konsulko.com>
Fri, 12 May 2017 12:36:52 +0000 (08:36 -0400)
Data cache memory needs to be disabled before handing over control to
linux kernel. This patch populates the cleanup_before_linux stub.

Signed-off-by: Vikas Manocha <vikas.manocha@st.com>
arch/arm/cpu/armv7m/cpu.c

index 58cde9391f2f5a83c19bad8bb2abbee5f8152e2d..a424babde547042bbb97958cd8ca2ff50cef4e13 100644 (file)
  */
 int cleanup_before_linux(void)
 {
+       /*
+        * this function is called just before we call linux
+        * it prepares the processor for linux
+        *
+        * disable interrupt and turn off caches etc ...
+        */
+       disable_interrupts();
+       /*
+        * turn off D-cache
+        * dcache_disable() in turn flushes the d-cache
+        * MPU is still enabled & can't be disabled as the u-boot
+        * code might be running in sdram which by default is not
+        * executable area.
+        */
+       dcache_disable();
+       /* invalidate to make sure no cache line gets dirty between
+        * dcache flushing and disabling dcache */
+       invalidate_dcache_all();
+
        return 0;
 }