void JumpToApp(void) { /* 1. Disable watchdog */ EALLOW; WdRegs.WDCR.all = 0x0068; EDIS; /* 2. Disable global interrupts */ DINT; /* 3. Clear interrupt flags and enables */ IER = 0x0000; IFR = 0x0000; /* 4. Disable PIE */ EALLOW; PieCtrlRegs.PIECTRL.bit.ENPIE = 0; EDIS; /* 5. Clear all PIE interrupt enables */ PieCtrlRegs.PIEIER1.all = 0; PieCtrlRegs.PIEIER2.all = 0; PieCtrlRegs.PIEIER3.all = 0; PieCtrlRegs.PIEIER4.all = 0; PieCtrlRegs.PIEIER5.all = 0; PieCtrlRegs.PIEIER6.all = 0; PieCtrlRegs.PIEIER7.all = 0; PieCtrlRegs.PIEIER8.all = 0; PieCtrlRegs.PIEIER9.all = 0; PieCtrlRegs.PIEIER10.all = 0; PieCtrlRegs.PIEIER11.all = 0; PieCtrlRegs.PIEIER12.all = 0; /* 6. Clear all PIE interrupt flags */ PieCtrlRegs.PIEIFR1.all = 0; PieCtrlRegs.PIEIFR2.all = 0; PieCtrlRegs.PIEIFR3.all = 0; PieCtrlRegs.PIEIFR4.all = 0; PieCtrlRegs.PIEIFR5.all = 0; PieCtrlRegs.PIEIFR6.all = 0; PieCtrlRegs.PIEIFR7.all = 0; PieCtrlRegs.PIEIFR8.all = 0; PieCtrlRegs.PIEIFR9.all = 0; PieCtrlRegs.PIEIFR10.all = 0; PieCtrlRegs.PIEIFR11.all = 0; PieCtrlRegs.PIEIFR12.all = 0; /* 7. Acknowledge all PIE groups */ PieCtrlRegs.PIEACK.all = 0xFFFF; /* 8. TI Recommended: Indirect branch through XAR7 */ // __asm(" MOVL XAR7, #0x084000"); /* Load app address */ __asm(" NOP"); __asm(" NOP"); __asm(" NOP"); __asm(" NOP"); __asm(" LB 0x084000"); /* Indirect branch */ /* Should never reach here */ while(1); }