I am not as familiar with the 56f8025, but on the 56f8367 and 56f8357s I use, the codewarrior PE tool will store the user's starting address in the top 32bits of dataflash memory - if you have the PE license it does this automatically if you check "Bootloader support = Yes" in the processor expert. IF you don't have PE license, you could do the similar thing with your app code with the address of main(). You must loadthe 32-bit address value into an unsigned long "StartAddress".
The bootloader then just does the following (in the '357 and '367 anyhow):
#define USER_INTERRUPT_VECTOR_ADDRESS (0x00000000UL)
#define INTC_VBA *((volatile word *)0x0000F1AA)
/****************************************************************************
/ change base address of the interrupt vector table for user's application
/****************************************************************************/
setReg(INTC_VBA, USER_INTERRUPT_VECTOR_ADDRESS >> 8);
asm(nop);
asm(nop);
/****************************************************************************
/ call user's application
/****************************************************************************/
asm(move.l StartAddress, N);
asm(jmp (N)); // and off we go to application
asm(nop);
asm(nop);
Hope this helps - my apologies if I misunderstood your question.