Index: uspace/lib/libc/arch/ia32/src/entry.s
===================================================================
--- uspace/lib/libc/arch/ia32/src/entry.s	(revision 83a0e47e5eaf1b9823c1083b05b0e2ffb5ff959d)
+++ uspace/lib/libc/arch/ia32/src/entry.s	(revision f29a3a24d16a6735fe7d2c7852aa35dd11c133eb)
@@ -56,7 +56,8 @@
 0:
 	#
-	# Stop stack traces in this function.
+	# Create the first stack frame.
 	#
-	xorl %ebp, %ebp
+	pushl $0 
+	movl %esp, %ebp
 
 	# Pass the PCB pointer to __main as the first argument
Index: uspace/lib/libc/arch/ia32/src/stacktrace.S
===================================================================
--- uspace/lib/libc/arch/ia32/src/stacktrace.S	(revision 83a0e47e5eaf1b9823c1083b05b0e2ffb5ff959d)
+++ uspace/lib/libc/arch/ia32/src/stacktrace.S	(revision f29a3a24d16a6735fe7d2c7852aa35dd11c133eb)
@@ -33,4 +33,5 @@
 .global frame_pointer_validate
 .global return_address_get
+.global program_counter_get
 
 frame_pointer_get:
@@ -51,2 +52,6 @@
 	movl 4(%eax), %eax
 	ret
+
+program_counter_get:
+	movl (%esp), %eax
+	ret
Index: uspace/lib/libc/arch/ia32/src/thread_entry.s
===================================================================
--- uspace/lib/libc/arch/ia32/src/thread_entry.s	(revision 83a0e47e5eaf1b9823c1083b05b0e2ffb5ff959d)
+++ uspace/lib/libc/arch/ia32/src/thread_entry.s	(revision f29a3a24d16a6735fe7d2c7852aa35dd11c133eb)
@@ -42,7 +42,8 @@
 
 	#
-	# Stop stack traces in this function.
+	# Create the first stack frame.
 	#
-	xorl %ebp, %ebp
+	pushl $0
+	mov %esp, %ebp
 
 	#
