Index: libc/arch/ia64/include/psthread.h
===================================================================
--- libc/arch/ia64/include/psthread.h	(revision 0319a8f61fbc0255bedee7140aed99f56326d480)
+++ libc/arch/ia64/include/psthread.h	(revision a7818c26b1c3cd27c8de8760425f63338107994e)
@@ -42,4 +42,8 @@
 #define PFM_MASK        (~0x3fffffffff)
 
+#define PSTHREAD_INITIAL_STACK_PAGES_NO 2
+#define PSTHREAD_INITIAL_STACK_DIVISION 2  /*Stack is divided into two equal parts (for clasic stack and register stack)*/
+
+
 #ifdef context_set
 #undef context_set
@@ -49,7 +53,7 @@
 	do {												\
 		(c)->pc = (uint64_t) _pc;								\
-		(c)->bsp = (uint64_t) stack;								\
+		(c)->bsp = ((uint64_t) stack) + size / PSTHREAD_INITIAL_STACK_DIVISION;								\
 		(c)->ar_pfs &= PFM_MASK; 								\
-		(c)->sp = ((uint64_t) stack) + ALIGN_UP((size), STACK_ALIGNMENT) - SP_DELTA;		\
+		(c)->sp = ((uint64_t) stack) + ALIGN_UP((size / PSTHREAD_INITIAL_STACK_DIVISION), STACK_ALIGNMENT) - SP_DELTA;		\
 		(c)->tp = (uint64_t) tls;								\
 	} while (0);
Index: libc/generic/psthread.c
===================================================================
--- libc/generic/psthread.c	(revision 0319a8f61fbc0255bedee7140aed99f56326d480)
+++ libc/generic/psthread.c	(revision a7818c26b1c3cd27c8de8760425f63338107994e)
@@ -34,4 +34,9 @@
 #include <stdio.h>
 #include <kernel/arch/faddr.h>
+
+
+#ifndef PSTHREAD_INITIAL_STACK_PAGES_NO
+#define PSTHREAD_INITIAL_STACK_PAGES_NO 1
+#endif
 
 static LIST_INITIALIZE(ready_list);
@@ -166,5 +171,5 @@
 		return 0;
 	}
-	pt->stack = (char *) malloc(getpagesize());
+	pt->stack = (char *) malloc(PSTHREAD_INITIAL_STACK_PAGES_NO*getpagesize());
 
 	if (!pt->stack) {
@@ -180,5 +185,5 @@
 
 	context_save(&pt->ctx);
-	context_set(&pt->ctx, FADDR(psthread_main), pt->stack, getpagesize(),
+	context_set(&pt->ctx, FADDR(psthread_main), pt->stack, PSTHREAD_INITIAL_STACK_PAGES_NO*getpagesize(),
 		    tcb);
 
