diff options
Diffstat (limited to 'src/arch/e1/core/setjmp.c')
| -rw-r--r-- | src/arch/e1/core/setjmp.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/arch/e1/core/setjmp.c b/src/arch/e1/core/setjmp.c new file mode 100644 index 000000000..63bcc484f --- /dev/null +++ b/src/arch/e1/core/setjmp.c @@ -0,0 +1,26 @@ +/* + * Copyright 2003 Yannis Mitsos and George Thanos + * {gmitsos@gthanos}@telecom.ntua.gr + * Released under GPL2, see the file COPYING in the top directory + * + */ +#include "setjmp.h" + +int setjmp( jmp_buf state) +{ + asm volatile( "mov %0, G3\n\t" + "mov %1, G4\n\t" + :"=l"(state->__jmpbuf->G3), + "=l"(state->__jmpbuf->G4) + :/*no input*/ + :"%G3", "%G4" ); + + asm volatile( "setadr %0\n\t" + "mov %1, L1\n\t" + "mov %2, L2\n\t" + :"=l"(state->__jmpbuf->SavedSP), + "=l"(state->__jmpbuf->SavedPC), + "=l"(state->__jmpbuf->SavedSR) + :/*no input*/); + return 0; +} |
