Index: uspace/lib/softfloat/comparison.c
===================================================================
--- uspace/lib/softfloat/comparison.c	(revision 84929b019a712851b525eb56d5c44b656df46cbd)
+++ uspace/lib/softfloat/comparison.c	(revision ed9043f73bae6c06b009ed24628bbc3c96920704)
@@ -681,4 +681,16 @@
 }
 
+int __aeabi_fcmpun(float32_t a, float32_t b)
+{
+	float32_u ua;
+	ua.val = a;
+
+	float32_u ub;
+	ub.val = b;
+
+	// TODO: sigNaNs
+	return is_float32_nan(ua.data) || is_float32_nan(ub.data);
+}
+
 #endif
 
@@ -920,4 +932,16 @@
 }
 
+int __aeabi_dcmpun(float64_t a, float64_t b)
+{
+	float64_u ua;
+	ua.val = a;
+
+	float64_u ub;
+	ub.val = b;
+
+	// TODO: sigNaNs
+	return is_float64_nan(ua.data) || is_float64_nan(ub.data);
+}
+
 #endif
 
Index: uspace/lib/softfloat/comparison.h
===================================================================
--- uspace/lib/softfloat/comparison.h	(revision 84929b019a712851b525eb56d5c44b656df46cbd)
+++ uspace/lib/softfloat/comparison.h	(revision ed9043f73bae6c06b009ed24628bbc3c96920704)
@@ -93,4 +93,5 @@
 extern int __aeabi_fcmple(float32_t, float32_t);
 extern int __aeabi_fcmpeq(float32_t, float32_t);
+extern int __aeabi_fcmpun(float32_t, float32_t);
 #endif
 
@@ -109,4 +110,5 @@
 extern int __aeabi_dcmpge(float64_t, float64_t);
 extern int __aeabi_dcmple(float64_t, float64_t);
+extern int __aeabi_dcmpun(float64_t, float64_t);
 #endif
 
