#include #include #include .section ".text_bare_init_","ax" ENTRY(arm_cpu_lowlevel_init) mov r2, lr /* set the cpu to SVC32 mode */ mrs r12, cpsr bic r12, r12, #0x1f orr r12, r12, #0xd3 msr cpsr, r12 #if __LINUX_ARM_ARCH__ >= 7 isb #elif __LINUX_ARM_ARCH__ == 6 mcr p15, 0, r12, c7, c5, 4 #endif /* disable MMU stuff and caches */ mrc p15, 0, r12, c1, c0, 0 bic r12, r12 , #(CR_M | CR_C | CR_B) bic r12, r12, #(CR_S | CR_R | CR_V) orr r12, r12, #CR_I #if __LINUX_ARM_ARCH__ >= 6 orr r12, r12, #CR_U bic r12, r12, #CR_A #else orr r12, r12, #CR_A #endif #ifdef __ARMEB__ orr r12, r12, #CR_B #endif mcr p15, 0, r12, c1, c0, 0 mov pc, r2 ENDPROC(arm_cpu_lowlevel_init)