diff --git a/stlport/stl/_stdexcept.h b/stlport/stl/_stdexcept.h
index 8c784bb..dba5d01 100644
--- a/stlport/stl/_stdexcept.h
+++ b/stlport/stl/_stdexcept.h
@@ -25,8 +25,7 @@
 
 #if !defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE)
 
-#  if defined(_STLP_USE_EXCEPTIONS) || \
-    !(defined(_MIPS_SIM) && defined(_ABIO32) && (_MIPS_SIM == _ABIO32))
+#  if defined(_STLP_USE_EXCEPTIONS) || 1
 
 _STLP_BEGIN_NAMESPACE
 
diff --git a/stlport/stl/_stdexcept_base.h b/stlport/stl/_stdexcept_base.h
index 69dc077..993f2e9 100644
--- a/stlport/stl/_stdexcept_base.h
+++ b/stlport/stl/_stdexcept_base.h
@@ -25,8 +25,9 @@
 #    include <stl/_exception.h>
 #  endif
 
-#  if defined(_STLP_USE_EXCEPTIONS) || \
-    !(defined(_MIPS_SIM) && defined(_ABIO32) && (_MIPS_SIM == _ABIO32))
+#  if defined(_STLP_USE_EXCEPTIONS) || 1
+/* TODO: use same conditions on fwd def of __Named_exception
+         in _exception.h and its use in _ios_base.h */
 
 #    ifndef _STLP_INTERNAL_CSTRING
 #      include <stl/_cstring.h>
diff --git a/stlport/stl/config/features.h b/stlport/stl/config/features.h
index b5b4e3a..c1eb53c 100644
--- a/stlport/stl/config/features.h
+++ b/stlport/stl/config/features.h
@@ -162,7 +162,7 @@
 #    define _STLP_BIG_ENDIAN 1
 #  elif defined (__i386) || defined (_M_IX86) || defined (_M_ARM) || \
         defined (__amd64__) || defined (_M_AMD64) || defined (__x86_64__) || \
-        defined (__alpha__)
+        defined (__alpha__) || defined (_MIPSEL)
 #    define _STLP_LITTLE_ENDIAN 1
 #  elif defined (__ia64__)
     /* itanium allows both settings (for instance via gcc -mbig-endian) - hence a seperate check is required */
diff --git a/stlport/stl/pointers/_tools.h b/stlport/stl/pointers/_tools.h
index ec94806..5bb7b25 100644
--- a/stlport/stl/pointers/_tools.h
+++ b/stlport/stl/pointers/_tools.h
@@ -90,8 +90,8 @@
 struct _StorageType<_Tp*> {
   // Even if we detect a pointer type we use dispatch function to consider if it can be stored as a void*.
   // For instance function pointer might not necessarily be convertible to void*.
-  enum { use_void_ptr = (sizeof(_UseVoidPtrStorageType(__true_type(),
-                                                       __STATIC_CAST(_Tp*, 0))) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseVoidPtrStorageType(__true_type(),
+                                                                  __STATIC_CAST(_Tp*, 0))) == sizeof(char*))  };
   enum { use_const_volatile_void_ptr = use_void_ptr };
   typedef typename __select<use_void_ptr,
                             void*,
@@ -101,8 +101,8 @@
 
 template <class _Tp>
 struct _StorageType<_Tp const*> {
-  enum { use_void_ptr = (sizeof(_UseConstVoidPtrStorageType(__true_type(),
-                                                            __STATIC_CAST(const _Tp*, 0))) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseConstVoidPtrStorageType(__true_type(),
+                                                                       __STATIC_CAST(const _Tp*, 0))) == sizeof(char*)) };
   enum { use_const_volatile_void_ptr = use_void_ptr };
   typedef typename __select<use_void_ptr,
                             const void*,
@@ -114,8 +114,8 @@
 
 template <class _Tp>
 struct _StorageType<_Tp volatile*> {
-  enum { use_void_ptr = (sizeof(_UseVolatileVoidPtrStorageType(__true_type(),
-                                                               __STATIC_CAST(_Tp volatile*, 0))) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseVolatileVoidPtrStorageType(__true_type(),
+                                                                          __STATIC_CAST(_Tp volatile*, 0))) == sizeof(char*)) };
   enum { use_const_volatile_void_ptr = use_void_ptr };
   typedef typename __select<use_void_ptr,
                             volatile void*,
@@ -127,8 +127,8 @@
 
 template <class _Tp>
 struct _StorageType<_Tp const volatile*> {
-  enum { use_void_ptr = (sizeof(_UseConstVolatileVoidPtrStorageType(__true_type(),
-                                                                    __STATIC_CAST(_Tp const volatile*, 0))) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseConstVolatileVoidPtrStorageType(__true_type(),
+                                                                               __STATIC_CAST(_Tp const volatile*, 0))) == sizeof(char*)) };
   enum { use_const_volatile_void_ptr = use_void_ptr };
   typedef typename __select<use_void_ptr,
                             const volatile void*,
@@ -147,10 +147,10 @@
 #else
   static _Tp __null_rep;
 #endif
-  enum { use_void_ptr = (sizeof(_UseVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
-  enum { use_const_void_ptr = (sizeof(_UseConstVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
-  enum { use_volatile_void_ptr = (sizeof(_UseVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
-  enum { use_const_volatile_void_ptr = (sizeof(_UseConstVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
+  enum { use_const_void_ptr = (sizeof(_STLP_PRIV _UseConstVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
+  enum { use_volatile_void_ptr = (sizeof(_STLP_PRIV _UseVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
+  enum { use_const_volatile_void_ptr = (sizeof(_STLP_PRIV _UseConstVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
 
   typedef typename __select<!use_const_volatile_void_ptr,
                             _Tp,
