Index: arch/mips32/include/mm/page.h
===================================================================
--- arch/mips32/include/mm/page.h	(revision 5581c45ef874e81d8bab6d1d9512b2adb4be12b0)
+++ arch/mips32/include/mm/page.h	(revision d9e11ff2ca99628fcd951c1b400d7056854f195b)
@@ -97,5 +97,5 @@
 #define PTE_VALID_ARCH(pte)			(*((__u32 *) (pte)) != 0)
 #define PTE_PRESENT_ARCH(pte)			((pte)->p != 0)
-#define PTE_GET_FRAME_ARCH(pte)			((pte)->pfn<<FRAME_WIDTH)
+#define PTE_GET_FRAME_ARCH(pte)			((pte)->pfn<<12)
 
 #ifndef __ASM__
Index: generic/include/errno.h
===================================================================
--- generic/include/errno.h	(revision 5581c45ef874e81d8bab6d1d9512b2adb4be12b0)
+++ generic/include/errno.h	(revision d9e11ff2ca99628fcd951c1b400d7056854f195b)
@@ -30,5 +30,8 @@
 #define __ERRNO_H__
 
-#define ENOENT    1
+/* 1-255 are kernel error codes, 256-512 are user error codes */
+
+#define ENOENT     -1  /* No such entry */
+#define ENOMEM     -2  /* Not enough memory */
 
 #endif
Index: generic/src/ipc/ipc.c
===================================================================
--- generic/src/ipc/ipc.c	(revision 5581c45ef874e81d8bab6d1d9512b2adb4be12b0)
+++ generic/src/ipc/ipc.c	(revision d9e11ff2ca99628fcd951c1b400d7056854f195b)
@@ -191,9 +191,8 @@
 		} else {
 			if (!(flags & IPC_WAIT_NONBLOCKING)) {
+				/* Wait for event to appear */
 				condvar_wait(&box->cv, &box->mutex);
 				continue;
 			}
-			if (condvar_trywait(&box->cv, &box->mutex) != ESYNCH_WOULD_BLOCK)
-				continue;
 			request = NULL;
 		}
Index: generic/src/mm/as.c
===================================================================
--- generic/src/mm/as.c	(revision 5581c45ef874e81d8bab6d1d9512b2adb4be12b0)
+++ generic/src/mm/as.c	(revision d9e11ff2ca99628fcd951c1b400d7056854f195b)
@@ -401,5 +401,5 @@
 			 */ 
 			pte = page_mapping_find(as, area->base + i*PAGE_SIZE);
-			if (pte) {
+			if (pte && PTE_VALID(pte)) {
 				ASSERT(PTE_PRESENT(pte));
 				frame_free(ADDR2PFN(PTE_GET_FRAME(pte)));
