#define PMC_SCRATCH0 0x7000e450 // Data storage #define PMC_SCRATCH1 0x7000e454 // Address storage #define PMC_CNTRL 0x7000e400 void _start() { unsigned int *target = (unsigned int *)(*(volatile unsigned int *)PMC_SCRATCH1); if ((unsigned int)target == 0) target = (unsigned int *)0xFFF00000; *(volatile unsigned int *)PMC_SCRATCH0 = *target; *(volatile unsigned int *)PMC_SCRATCH1 = (unsigned int)target + 4; *(volatile unsigned int *)PMC_CNTRL |= (1 << 4); while (1) ; }