improve stack-selection code in irq_{save, return}

@georgekang #9: Will it be ok to bring back
`__asm__ __volatile__ ("mov lr, %0" : : "r" ((ctx)->ret)); `
if this patch works for this issue?