arm: fix setjmp/longjump by using a different approach

The setjmp regression tests found an issue which I have tried
to fix.  Apparently our current implementation is not 100%
correct, although I have not found the actual failure.

This change is inspired by FreeBSD's code.  Previously we
had a pointer to the jmp_buf and incremented it with every
command we did.  FreeBSD stores the base pointer instead
and accesses the buffer relative to that pointer.

Using this way, setjmp regression tests seem happy now.

"seems mostly reasonable" drahn@