/* * * C-SPY macro information * * __jtagCP15ReadReg(CRn, CRm, op1, op2) * __jtagCP15WriteReg(CRn, CRm, op1, op2, value) * __readMemory8(address, zone) * __writeMemory8(value, address, zone) * __writeMemory32(value, address, zone) * * */ __init_TCM() { __var v_reg; __message "Initialize ATCM"; /* MRC p15, 0, , c1, c0, 1 ; Read ACTLR MCR p15, 0, , c1, c0, 1 ; Write ACTLR */ /* enable ECC in ACTLR */ v_reg = __jtagCP15ReadReg(1, 0, 0, 1); v_reg = v_reg | 0x06000000; // set 26 and 25 bits for enabling ECC __message "ACTRL: ", v_reg:%x; // output ACTRL value for check __jtagCP15WriteReg(1, 0, 0, 1, v_reg); __fillMemory32(0x0, 0x00000000, "Memory", 0x20000, "Copy"); __message "ATCM initialization finished"; } __init_VIC_ProvideHandler() { __var v_reg; __message "Initialize VIC provide handler \n"; /* MRC p15, 0, , c1, c0, 0 ; Read SCTLR MCR p15, 0, , c1, c0, 0 ; Write SCTLR */ /* Set VIC to provide handler address */ v_reg = __jtagCP15ReadReg(1, 0, 0, 0); v_reg = v_reg | 0x01000000; // set 24 bit for setting VE bit __jtagCP15WriteReg(1, 0, 0, 0, v_reg); } execUserPreload() { __var t ; __message "Executing execUserPreload() function"; __hwReset(0); __delay(100); __init_TCM(); __message "FINISH Executing execUserPreload() function"; } execUserReset() { __var t; __message "Executing execUserReset() function"; __init_VIC_ProvideHandler(); t = #CPSR; // Clear CPSR.F bit __message "CPSR ",t:%x; t = t & 0xFFFFFFBF; #CPSR = t; t = #CPSR; __message "CPSR ",t:%x; __message "FINISH Executing execUserReset() function"; }