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 7397c735f9919668a12f6a66a415c0d1fe4d7de1)
@@ -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
+
