//---------------------------------------------------------------------------- /// Lock D cache /// \param D cache way //---------------------------------------------------------------------------- void CP15_ShutdownDcache(void) { CP15_TestCleanInvalidateDcache(); CP15_DrainWriteBuffer(); CP15_DisableDcache(); CP15_InvalidateTLB(); }
static void Boot_Linux(void) { U32 i,j; *((volatile U32 *)(ZPARAMADDR + 4*0)) = 2; *((volatile U32 *)(ZPARAMADDR + 4*1)) = ATAG_CORE; *((volatile U32 *)(ZPARAMADDR + 4*2)) = 4; *((volatile U32 *)(ZPARAMADDR + 4*3)) = ATAG_SERIAL; *((volatile U32 *)(ZPARAMADDR + 4*4)) = board_id_l; *((volatile U32 *)(ZPARAMADDR + 4*5)) = board_id_h; *((volatile U32 *)(ZPARAMADDR + 4*6)) = 3; *((volatile U32 *)(ZPARAMADDR + 4*7)) = ATAG_REVISION; *((volatile U32 *)(ZPARAMADDR + 4*8)) = BOARD_VER; // *((volatile U32 *)(ZPARAMADDR + 4*9)) = (4 + kcmdFileSize + 5) >> 2; // *((volatile U32 *)(ZPARAMADDR + 4*10)) = ATAG_CMDLINE; *((volatile U32 *)(ZPARAMADDR + 4*9)) = 2 + (kcmdFileSize >> 2) + 1; *((volatile U32 *)(ZPARAMADDR + 4*10)) = ATAG_CMDLINE; for(i=0;i<64;i++) for(j=0;j<8;j++) CP15_CleanInvalidateDcacheIndex((i<<26)|(j<<5)); CP15_DisableDcache(); CP15_DisableIcache(); CP15_InvalidateIcache(); CP15_DisableMMU(); CP15_InvalidateTLB(); run = (void (*)(void))ZRELADDR; BootmSet_ParamAddr(ZPARAMADDR); BootmSet_MachineID(LINUX_MACH_ID); run(); }