Index: uspace/lib/libc/arch/ia32/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/ia32/Makefile.inc	(revision a671cf0a488bfc62f9e60e752e017c3740b49e6c)
+++ uspace/lib/libc/arch/ia32/Makefile.inc	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
@@ -35,5 +35,6 @@
 ARCH_SOURCES += arch/$(ARCH)/src/syscall.S \
 		arch/$(ARCH)/src/fibril.S \
-		arch/$(ARCH)/src/tls.c
+		arch/$(ARCH)/src/tls.c \
+		arch/$(ARCH)/src/setjmp.S 
 
 LFLAGS += -N
Index: uspace/lib/libc/arch/ia32/include/setjmp.h
===================================================================
--- uspace/lib/libc/arch/ia32/include/setjmp.h	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ uspace/lib/libc/arch/ia32/include/setjmp.h	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2008 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup libcia32
+ * @{
+ */
+/** @file
+ */
+
+#ifndef LIBC_ia32_SETJMP_H_
+#define LIBC_ia32_SETJMP_H_
+
+#include <libarch/types.h>
+
+typedef struct {
+	uint32_t ebx;
+	uint32_t esi;
+	uint32_t edi;
+	uint32_t ebp;
+	uint32_t esp;
+	uint32_t pc;
+} jmp_buf;
+
+int setjmp(jmp_buf env);
+void longjmp(jmp_buf env,int val) __attribute__((__noreturn__));
+
+#endif
+
+/** @}
+ */
+
Index: uspace/lib/libc/arch/ia32/src/setjmp.S
===================================================================
--- uspace/lib/libc/arch/ia32/src/setjmp.S	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ uspace/lib/libc/arch/ia32/src/setjmp.S	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
@@ -0,0 +1,63 @@
+#
+# Copyright (c) 2008 Josef Cejka
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+.text
+.global setjmp
+.global longjmp
+
+.type setjmp,@function
+setjmp:
+	movl	0(%esp), %ecx	# save current pc
+	leal	4(%esp), %edx	# save stack pointer
+	movl	(%edx), %eax	# get jmp_buf pointer
+
+		# Save registers 
+	movl %ebx, 0(%eax)
+	movl %esi, 4(%eax)
+	movl %edi, 8(%eax)
+	movl %ebp, 12(%eax)
+	movl %edx, 16(%eax)
+
+	movl %ecx, 20(%eax) # save pc
+	ret
+
+.type longjmp,@function
+longjmp:
+
+	movl 4(%esp), %ecx	# put address of jmp_buf into ecx
+	movl 8(%esp), %eax	# put return value into eax	
+
+		# restore all registers
+	movl 0(%ecx), %ebx
+	movl 4(%ecx), %esi
+	movl 8(%ecx), %edi
+	movl 12(%ecx), %ebp
+	movl 16(%ecx), %esp
+	
+	movl 20(%ecx), %edx # saved return address 
+	jmp *%edx
