To answer this question, to do a soft reset on the Kinetis platform you need to set the SYSRESETREQ bit in the NVIC AIRCR register.
In the MK40X256VMD100 header file the register is SCB_AIRCR and you cannot just do a read modify write on this register because it has a vector key that must be written correctly and doesn't read the same. Here is a little snippet of code to reset the Kinetis:
uint_32 read_value = SCB_AIRCR; read_value &= ~SCB_AIRCR_VECTKEY_MASK; read_value |= SCB_AIRCR_VECTKEY(0x05FA); read_value |= SCB_AIRCR_SYSRESETREQ_MASK; _int_disable(); SCB_AIRCR = read_value; while(1);