diff --git a/configure.in b/configure.in
index 65fe7152055689e3fe3c5827f2231ab661e6771f..c36d24a5bc5eb6b3ae98ad982b969df4243df325 100644
--- a/configure.in
+++ b/configure.in
@@ -334,6 +334,10 @@ case "$target_os" in
       # Use the built-in alloca()
       CFLAGS="$CFLAGS -Kalloca"
       CXXFLAGS="$CFLAGS -Kalloca"
+      # Use no_implicit for templates
+      CXXFLAGS="$CXXFLAGS -Tno_implicit"
+      AC_DEFINE([HAVE_EXPLICIT_TEMPLATE_INSTANTIATION],
+        [1], [Defined by configure. Use explicit template instantiation.])
     fi
   ;;
 esac
diff --git a/extra/yassl/src/socket_wrapper.cpp b/extra/yassl/src/socket_wrapper.cpp
index 91cea1f9753fe83e430e658b41b4db170e65a3e6..285e0dee2e5fccda6d7d7e07966a4a5750da3dca 100644
--- a/extra/yassl/src/socket_wrapper.cpp
+++ b/extra/yassl/src/socket_wrapper.cpp
@@ -39,7 +39,7 @@
     #include <string.h>
 #endif // _WIN32
 
-#ifdef __sun
+#if defined(__sun) || defined(__SCO_VERSION__)
     #include <sys/filio.h>
 #endif
 
diff --git a/extra/yassl/src/timer.cpp b/extra/yassl/src/timer.cpp
index 4fe0d3aa4f9c33138cd7d137080da6f827a1814e..8b7d2d17a84f2e81550b3fe5abb44b0ca54445e6 100644
--- a/extra/yassl/src/timer.cpp
+++ b/extra/yassl/src/timer.cpp
@@ -26,13 +26,17 @@
 #include "runtime.hpp"
 #include "timer.hpp"
 
+#ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#else
+#include <sys/time.h>
+#endif
+
 namespace yaSSL {
 
 #ifdef _WIN32
 
-    #define WIN32_LEAN_AND_MEAN
-    #include <windows.h>
-
     timer_d timer()
     {
         static bool          init(false);
@@ -57,8 +61,6 @@ namespace yaSSL {
 
 #else // _WIN32
 
-    #include <sys/time.h>
-
     timer_d timer()
     {
         struct timeval tv;