Index: kernel/arch/ia32/include/context.h
===================================================================
--- kernel/arch/ia32/include/context.h	(revision 8fb47ec08ad751bb678a4335f10281077684e7a5)
+++ kernel/arch/ia32/include/context.h	(revision bac86377e1dbd799c062af0852acec649a1d3339)
@@ -49,4 +49,11 @@
 #define SP_DELTA	(8 + STACK_ITEM_SIZE)
 
+#define context_set(c, _pc, stack, size) \
+	do { \
+		(c)->pc = (uintptr_t) (_pc); \
+		(c)->sp = ((uintptr_t) (stack)) + (size) - SP_DELTA; \
+		(c)->ebp = 0; \
+	} while (0)
+
 #endif /* KERNEL */
 
Index: kernel/arch/ia32/src/boot/boot.S
===================================================================
--- kernel/arch/ia32/src/boot/boot.S	(revision 8fb47ec08ad751bb678a4335f10281077684e7a5)
+++ kernel/arch/ia32/src/boot/boot.S	(revision bac86377e1dbd799c062af0852acec649a1d3339)
@@ -94,4 +94,8 @@
 	pushl grub_eax
 	call arch_pre_main
+
+	# Create the first stack frame
+	pushl $0
+	movl %esp, %ebp
 	
 	call main_bsp
Index: kernel/arch/ia32/src/smp/ap.S
===================================================================
--- kernel/arch/ia32/src/smp/ap.S	(revision 8fb47ec08ad751bb678a4335f10281077684e7a5)
+++ kernel/arch/ia32/src/smp/ap.S	(revision bac86377e1dbd799c062af0852acec649a1d3339)
@@ -78,4 +78,7 @@
 	addl $0x80000000, %esp			# PA2KA(ctx.sp)
 	
+	pushl $0				# create the first stack frame
+	movl %esp, %ebp
+
 	jmpl $KTEXT, $main_ap
 
