diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
index 06cbd44..5927a05 100644
--- a/crypto/CMakeLists.txt
+++ b/crypto/CMakeLists.txt
@@ -144,6 +144,7 @@
   crypto.c
   mem.c
   thread.c
+  thread_none.c
   thread_pthread.c
   thread_win.c
   ex_data.c
diff --git a/crypto/cpu-arm.c b/crypto/cpu-arm.c
index e7538cb..74e937bd 100644
--- a/crypto/cpu-arm.c
+++ b/crypto/cpu-arm.c
@@ -17,9 +17,12 @@
 #if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
 
 #include <inttypes.h>
+#include <string.h>
+
+#if !defined(OPENSSL_TRUSTY)
 #include <setjmp.h>
 #include <signal.h>
-#include <string.h>
+#endif
 
 #include "arm_arch.h"
 
@@ -59,7 +62,7 @@
   }
 }
 
-#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM)
+#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && !defined(OPENSSL_TRUSTY)
 
 static sigjmp_buf sigill_jmp;
 
@@ -113,11 +116,11 @@
 
 #else
 
-static int probe_for_NEON() {
+static int probe_for_NEON(void) {
   return 0;
 }
 
-#endif  /* !OPENSSL_NO_ASM && OPENSSL_ARM */
+#endif  /* !OPENSSL_NO_ASM && OPENSSL_ARM && !OPENSSL_TRUSTY */
 
 void OPENSSL_cpuid_setup(void) {
   if (getauxval == NULL) {
diff --git a/crypto/internal.h b/crypto/internal.h
index a4cd3d8..42125db 100644
--- a/crypto/internal.h
+++ b/crypto/internal.h
@@ -112,12 +112,13 @@
 #include <openssl/ex_data.h>
 #include <openssl/thread.h>
 
-#if !defined(OPENSSL_WINDOWS)
-#include <pthread.h>
-#else
+#if defined(OPENSSL_NO_THREADS)
+#elif defined(OPENSSL_WINDOWS)
 #pragma warning(push, 3)
 #include <windows.h>
 #pragma warning(pop)
+#else
+#include <pthread.h>
 #endif
 
 #if defined(__cplusplus)
@@ -332,12 +333,15 @@
 
 /* Thread-safe initialisation. */
 
-#if !defined(OPENSSL_WINDOWS)
-typedef pthread_once_t CRYPTO_once_t;
-#define CRYPTO_ONCE_INIT PTHREAD_ONCE_INIT
-#else
+#if defined(OPENSSL_NO_THREADS)
+typedef uint32_t CRYPTO_once_t;
+#define CRYPTO_ONCE_INIT 0
+#elif defined(OPENSSL_WINDOWS)
 typedef LONG CRYPTO_once_t;
 #define CRYPTO_ONCE_INIT 0
+#else
+typedef pthread_once_t CRYPTO_once_t;
+#define CRYPTO_ONCE_INIT PTHREAD_ONCE_INIT
 #endif
 
 /* CRYPTO_once calls |init| exactly once per process. This is thread-safe: if
@@ -365,17 +369,20 @@
  * |CRYPTO_once_t| to ensure that the lock is setup before use. This is done
  * automatically by |CRYPTO_STATIC_MUTEX_lock_*|. */
 
-#if !defined(OPENSSL_WINDOWS)
-struct CRYPTO_STATIC_MUTEX {
-  pthread_rwlock_t lock;
-};
-#define CRYPTO_STATIC_MUTEX_INIT { PTHREAD_RWLOCK_INITIALIZER }
-#else
+#if defined(OPENSSL_NO_THREADS)
+struct CRYPTO_STATIC_MUTEX {};
+#define CRYPTO_STATIC_MUTEX_INIT {}
+#elif defined(OPENSSL_WINDOWS)
 struct CRYPTO_STATIC_MUTEX {
   CRYPTO_once_t once;
   CRITICAL_SECTION lock;
 };
 #define CRYPTO_STATIC_MUTEX_INIT { CRYPTO_ONCE_INIT, { 0 } }
+#else
+struct CRYPTO_STATIC_MUTEX {
+  pthread_rwlock_t lock;
+};
+#define CRYPTO_STATIC_MUTEX_INIT { PTHREAD_RWLOCK_INITIALIZER }
 #endif
 
 /* CRYPTO_MUTEX_init initialises |lock|. If |lock| is a static variable, use a
diff --git a/crypto/thread_none.c b/crypto/thread_none.c
new file mode 100644
index 0000000..cf4e85a
--- /dev/null
+++ b/crypto/thread_none.c
@@ -0,0 +1,55 @@
+/* Copyright (c) 2015, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include "internal.h"
+
+#if defined(OPENSSL_NO_THREADS)
+
+void CRYPTO_MUTEX_init(CRYPTO_MUTEX *lock) {}
+
+void CRYPTO_MUTEX_lock_read(CRYPTO_MUTEX *lock) {}
+
+void CRYPTO_MUTEX_lock_write(CRYPTO_MUTEX *lock) {}
+
+void CRYPTO_MUTEX_unlock(CRYPTO_MUTEX *lock) {}
+
+void CRYPTO_MUTEX_cleanup(CRYPTO_MUTEX *lock) {}
+
+void CRYPTO_STATIC_MUTEX_lock_read(struct CRYPTO_STATIC_MUTEX *lock) {}
+
+void CRYPTO_STATIC_MUTEX_lock_write(struct CRYPTO_STATIC_MUTEX *lock) {}
+
+void CRYPTO_STATIC_MUTEX_unlock(struct CRYPTO_STATIC_MUTEX *lock) {}
+
+void CRYPTO_once(CRYPTO_once_t *once, void (*init)(void)) {
+  if (*once) {
+    return;
+  }
+  *once = 1;
+  init();
+}
+
+static void *g_thread_locals[NUM_OPENSSL_THREAD_LOCALS];
+
+void *CRYPTO_get_thread_local(thread_local_data_t index) {
+  return g_thread_locals[index];
+}
+
+int CRYPTO_set_thread_local(thread_local_data_t index, void *value,
+                            thread_local_destructor_t destructor) {
+  g_thread_locals[index] = value;
+  return 1;
+}
+
+#endif  /* OPENSSL_NO_THREADS */
diff --git a/crypto/thread_pthread.c b/crypto/thread_pthread.c
index 4188c4c..59c4b8d 100644
--- a/crypto/thread_pthread.c
+++ b/crypto/thread_pthread.c
@@ -14,7 +14,7 @@
 
 #include "internal.h"
 
-#if !defined(OPENSSL_WINDOWS)
+#if !defined(OPENSSL_WINDOWS) && !defined(OPENSSL_NO_THREADS)
 
 #include <pthread.h>
 #include <stdlib.h>
@@ -159,4 +159,4 @@
   return 1;
 }
 
-#endif  /* !OPENSSL_WINDOWS */
+#endif  /* !OPENSSL_WINDOWS && !OPENSSL_NO_THREADS */
diff --git a/crypto/thread_test.c b/crypto/thread_test.c
index 04d71c5..cecda88 100644
--- a/crypto/thread_test.c
+++ b/crypto/thread_test.c
@@ -17,6 +17,8 @@
 #include <stdio.h>
 
 
+#if !defined(OPENSSL_NO_THREADS)
+
 #if defined(OPENSSL_WINDOWS)
 
 #pragma warning(push, 3)
@@ -189,3 +191,12 @@
   printf("PASS\n");
   return 0;
 }
+
+#else  /* OPENSSL_NO_THREADS */
+
+int main(int argc, char **argv) {
+  printf("PASS\n");
+  return 0;
+}
+
+#endif
diff --git a/crypto/thread_win.c b/crypto/thread_win.c
index fc8e50a..5efd8be 100644
--- a/crypto/thread_win.c
+++ b/crypto/thread_win.c
@@ -14,7 +14,7 @@
 
 #include "internal.h"
 
-#if defined(OPENSSL_WINDOWS)
+#if defined(OPENSSL_WINDOWS) && !defined(OPENSSL_NO_THREADS)
 
 #pragma warning(push, 3)
 #include <windows.h>
@@ -279,4 +279,4 @@
   return 1;
 }
 
-#endif  /* OPENSSL_WINDOWS */
+#endif  /* OPENSSL_WINDOWS && !OPENSSL_NO_THREADS */
diff --git a/include/openssl/asn1.h b/include/openssl/asn1.h
index 7c62161..4baf81c 100644
--- a/include/openssl/asn1.h
+++ b/include/openssl/asn1.h
@@ -61,6 +61,8 @@
 
 #include <openssl/base.h>
 
+#include <time.h>
+
 #include <openssl/bio.h>
 #include <openssl/stack.h>
 
diff --git a/include/openssl/base.h b/include/openssl/base.h
index b9c60fb..b769ad5 100644
--- a/include/openssl/base.h
+++ b/include/openssl/base.h
@@ -103,6 +103,11 @@
 #define OPENSSL_WINDOWS
 #endif
 
+#if defined(TRUSTY)
+#define OPENSSL_TRUSTY
+#define OPENSSL_NO_THREADS
+#endif
+
 #define OPENSSL_IS_BORINGSSL
 #define OPENSSL_VERSION_NUMBER 0x10002000
 
diff --git a/include/openssl/thread.h b/include/openssl/thread.h
index 31ce3b3..f6e7529 100644
--- a/include/openssl/thread.h
+++ b/include/openssl/thread.h
@@ -66,7 +66,9 @@
 #endif
 
 
-#if defined(OPENSSL_WINDOWS)
+#if defined(OPENSSL_NO_THREADS)
+typedef struct crypto_mutex_st {} CRYPTO_MUTEX;
+#elif defined(OPENSSL_WINDOWS)
 /* CRYPTO_MUTEX can appear in public header files so we really don't want to
  * pull in windows.h. It's statically asserted that this structure is large
  * enough to contain a Windows CRITICAL_SECTION by thread_win.c. */
