summaryrefslogtreecommitdiffstats
path: root/src/arch/e1/core/setjmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/e1/core/setjmp.c')
-rw-r--r--src/arch/e1/core/setjmp.c26
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;
+}