Index: uspace/lib/libc/arch/ia32/include/setjmp.h
===================================================================
--- uspace/lib/libc/arch/ia32/include/setjmp.h	(revision 6cbed0124fbe6940cc077ef1a11c5370436df417)
+++ 	(revision )
@@ -1,56 +1,0 @@
-/*
- * 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 6cbed0124fbe6940cc077ef1a11c5370436df417)
+++ uspace/lib/libc/arch/ia32/src/setjmp.S	(revision d2fa31f73ac58ff863812ce8f87f1fab50d27cf9)
@@ -27,4 +27,6 @@
 #
 
+#include <kernel/arch/context_offset.h>
+
 .text
 .global setjmp
@@ -33,16 +35,11 @@
 .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
+	movl 0(%esp),%eax	# save pc value into eax	
+	movl 4(%esp),%edx	# address of the context variable to save context to 
 
-		# Save registers 
-	movl %ebx, 0(%eax)
-	movl %esi, 4(%eax)
-	movl %edi, 8(%eax)
-	movl %ebp, 12(%eax)
-	movl %edx, 16(%eax)
+		# save registers to given structure
+	CONTEXT_SAVE_ARCH_CORE %edx %eax
 
-	movl %ecx, 20(%eax) # save pc
+	xorl %eax,%eax		# set_jmp returns 0
 	ret
 
@@ -53,11 +50,8 @@
 	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
+		# restore registers from jmp_buf
+	CONTEXT_RESTORE_ARCH_CORE %ecx %edx
+
+	movl %edx,0(%esp)	# put saved pc on stack
+	ret
+
