Jeff
In the uTasker project we do it like this (passing a pointer to the location of the reset vector):
static void jump_to_application(unsigned long app_link_location)
{
// Cortex-M3/M4/M7 assembler code
//
asm(" ldr sp, [r0,#0]"); // load the stack pointer value from the program's reset vector
asm(" ldr pc, [r0,#4]"); // load the program counter value from the program's reset vector to cause operation to continue from there
}
Regards
Mark
[uTasker project developer for Kinetis and i.MX RT]