Ejemplo n.º 1
0
//----------------------------------------------------------------------------
/// Lock D cache
/// \param D cache way
//----------------------------------------------------------------------------
void CP15_ShutdownDcache(void)
{ 
    CP15_TestCleanInvalidateDcache();  
    CP15_DrainWriteBuffer();
    CP15_DisableDcache();
    CP15_InvalidateTLB();      
}
Ejemplo n.º 2
0
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();
}