Index: kernel/arch/ia32/include/interrupt.h
===================================================================
--- kernel/arch/ia32/include/interrupt.h	(revision fe32163234401387c8b65d5b9fa81217da91da71)
+++ kernel/arch/ia32/include/interrupt.h	(revision 4d1be48b28f0f2235d0c72e58e71cccd21a36937)
@@ -72,7 +72,13 @@
 typedef struct istate {
 	uint32_t eax;
+	uint32_t ebx;
 	uint32_t ecx;
 	uint32_t edx;
+	uint32_t edi;
+	uint32_t esi;
 	uint32_t ebp;
+	
+	uint32_t ebp_frame;	/* imitation of frame pointer linkage */
+	uint32_t eip_frame;	/* imitation of return address linkage */
 
 	uint32_t gs;
@@ -81,9 +87,10 @@
 	uint32_t ds;
 
-	uint32_t error_word;
+	uint32_t error_word;	/* real or fake error word */
 	uint32_t eip;
 	uint32_t cs;
 	uint32_t eflags;
-	uint32_t stack[];
+	uint32_t esp;		/* only if istate_t is from uspace */
+	uint32_t ss;		/* only if istate_t is from uspace */
 } istate_t;
 
