/* | |
* | |
* 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, <Rd>, c1, c0, 1 ; Read ACTLR | |
MCR p15, 0, <Rd>, 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, <Rd>, c1, c0, 0 ; Read SCTLR | |
MCR p15, 0, <Rd>, 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"; | |
} |