Hi,
I was trying to a do RAM ECC fault injection test on the MPC5777C, the idea is that i try to inject 2 bit flips using the EIM and then i suppose to jump the IVOR1.
my code does everything correctly excepty that when i try to go back from the exception (IVOR1) i end up in another one (IVOR6)!!
Can someone guide me?
IVOR6 on e200z759 may be caused by one fo following reason:
• Illegal Instruction exception
• Privileged Instruction exception
• Trap exception
• Unimplemented Operation exception
Details you may find in e200z759n3 Core Reference Manual, Rev. 2
section 7.7.7 Program interrupt (IVOR6)
For RAM ECC injection I made example code here:
https://community.nxp.com/t5/MPC5xxx-Knowledge-Base/Error-Correction-Codes-Implemented-on-MPC5777C/t...
Hope it helps
it seems that i have an illegal instruction in the code below but i don't know where exactly:
#if VLE_IS_ON // for VLE code
void Increment_MCSRR0_to_next_instruction(void)
{
__asm(
"mfmcsrr0 %r5;"
/* determine opcode @ MCSRR0 */
"se_lhz %r4,0(%r5);"
/* check bit 31,28 only*/
"e_andi. %r3,%r4,0x9000;"
"e_cmpli 0x0,%r3,0x1000;"
"e_bne __machine_check_adjust_for_16bit_opcode;"
/* 0xx1 => 32 bit*/
"se_addi %r5,2;"
"__machine_check_adjust_for_16bit_opcode:;"
/* all others just 16 bit long*/
"se_addi %r5,2;"
/* save adjusted return address*/
"mtmcsrr0 %r5;"
);
}
I would recommend to see assembler code in the debugger and find fault instruction/access causing IVOR6 fault.