Index: kernel/arch/amd64/include/istate.h
===================================================================
--- kernel/arch/amd64/include/istate.h	(revision 005b7650984fbd538a5d58cc85a6fcf67782dc46)
+++ kernel/arch/amd64/include/istate.h	(revision d59c04658e0199d07b5c3ae2ee72998bdb6b8ee9)
@@ -66,8 +66,10 @@
 } istate_t;
 
+#define RPL_USER	3
+
 /** Return true if exception happened while in userspace */
 NO_TRACE static inline int istate_from_uspace(istate_t *istate)
 {
-	return !(istate->rip & UINT64_C(0x8000000000000000));
+	return (istate->cs & RPL_USER) == RPL_USER;
 }
 
Index: kernel/arch/ia32/include/istate.h
===================================================================
--- kernel/arch/ia32/include/istate.h	(revision 005b7650984fbd538a5d58cc85a6fcf67782dc46)
+++ kernel/arch/ia32/include/istate.h	(revision d59c04658e0199d07b5c3ae2ee72998bdb6b8ee9)
@@ -68,8 +68,10 @@
 } istate_t;
 
+#define RPL_USER	3
+
 /** Return true if exception happened while in userspace */
 NO_TRACE static inline int istate_from_uspace(istate_t *istate)
 {
-	return !(istate->eip & UINT32_C(0x80000000));
+	return (istate->cs & RPL_USER) == RPL_USER;
 }
 
