diff --git a/platform/linux-keystone2/Makefile.am b/platform/linux-keystone2/Makefile.am
index e302414..a6ee070 100644
--- a/platform/linux-keystone2/Makefile.am
+++ b/platform/linux-keystone2/Makefile.am
@@ -137,6 +137,8 @@ __LIB__libodp_la_SOURCES = \
 			   mcsdk/sockutils.c \
 			   ../linux-generic/odp_barrier.c \
 			   ../linux-generic/odp_cpumask.c \
+			   ../linux-generic/odp_errno.c \
+			   ../linux-generic/odp_impl.c \
 			   ../linux-generic/odp_linux.c \
 			   ../linux-generic/odp_ring.c \
 			   ../linux-generic/odp_rwlock.c \
@@ -145,4 +147,6 @@ __LIB__libodp_la_SOURCES = \
 			   ../linux-generic/odp_system_info.c \
 			   ../linux-generic/odp_thread.c \
 			   ../linux-generic/odp_ticketlock.c \
-			   ../linux-generic/odp_time.c
+			   ../linux-generic/odp_time.c \
+			   ../linux-generic/odp_version.c \
+			   ../linux-generic/odp_weak.c
diff --git a/platform/linux-keystone2/include/odp.h b/platform/linux-keystone2/include/odp.h
index 6ab30a9..7526d93 100644
--- a/platform/linux-keystone2/include/odp.h
+++ b/platform/linux-keystone2/include/odp.h
@@ -40,6 +40,7 @@ extern "C" {
 #include <odp/time.h>
 #include <odp/sync.h>
 #include <odp/rwlock.h>
+#include <odp/errno.h>
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-keystone2/include/odp/plat/state.h b/platform/linux-keystone2/include/odp/plat/state.h
index 0b4b07f..63428cb 100644
--- a/platform/linux-keystone2/include/odp/plat/state.h
+++ b/platform/linux-keystone2/include/odp/plat/state.h
@@ -14,6 +14,7 @@ extern "C" {
 #endif
 
 #include <odp/plat/ti_mcsdk.h>
+#include <odp/init.h>
 
 /**
  * @internal Global ODP state
@@ -37,6 +38,8 @@ struct odp_proc_s {
 	} nwal;                         /**< Per process NWAL state */
 	Rm_ServiceHandle *rm_service;   /**< Resource Manager service handle */
 	void *descriptor_mem_base;
+	odp_log_func_t log_fn;
+	odp_abort_func_t abort_fn;
 };
 
 /** @internal Per thread ODP state */
diff --git a/platform/linux-keystone2/include/odp/plat/ti_mcsdk.h b/platform/linux-keystone2/include/odp/plat/ti_mcsdk.h
index 5ccc9e0..b8e002a 100644
--- a/platform/linux-keystone2/include/odp/plat/ti_mcsdk.h
+++ b/platform/linux-keystone2/include/odp/plat/ti_mcsdk.h
@@ -13,6 +13,9 @@
 extern "C" {
 #endif
 
+/* Define asm for C99 compatibility */
+#define asm __asm
+
 #include <ti/csl/cslr_device.h>
 #include <ti/runtime/hplib/hplib.h>
 #include <ti/runtime/pktlib/pktlib.h>
diff --git a/platform/linux-keystone2/include/odp_internal.h b/platform/linux-keystone2/include/odp_internal.h
index 7ebf567..816e74f 100644
--- a/platform/linux-keystone2/include/odp_internal.h
+++ b/platform/linux-keystone2/include/odp_internal.h
@@ -19,15 +19,19 @@
 extern "C" {
 #endif
 
-#include <odp/plat/state.h>
 #include <odp/thread.h>
 
+extern __thread int __odp_errno;
+
 int odp_system_info_init(void);
 
 int odp_thread_init_global(void);
 int odp_thread_init_local(void);
+int odp_thread_term_local(void);
+int odp_thread_term_global(void);
 
 int odp_shm_init_global(void);
+int odp_shm_term_global(void);
 int odp_shm_init_local(void);
 
 int odp_buffer_pool_init_global(void);
@@ -39,7 +43,9 @@ int odp_queue_init_global(void);
 int odp_crypto_init_global(void);
 
 int odp_schedule_init_global(void);
+int odp_schedule_term_global(void);
 int odp_schedule_init_local(void);
+int odp_schedule_term_local(void);
 
 int odp_timer_init_global(void);
 int odp_timer_disarm_all(void);
diff --git a/platform/linux-keystone2/mcsdk/mcsdk_init.c b/platform/linux-keystone2/mcsdk/mcsdk_init.c
index fbc9bb5..2c1407a 100644
--- a/platform/linux-keystone2/mcsdk/mcsdk_init.c
+++ b/platform/linux-keystone2/mcsdk/mcsdk_init.c
@@ -7,11 +7,11 @@
  */
 
 #include <stdio.h>
-#include <odp_align.h>
-#include <odp_thread.h>
+#include <odp/align.h>
+#include <odp/thread.h>
 #include <odp_internal.h>
-#include <odp_ti_mcsdk.h>
-#include <odp_debug_internal.h>
+#include <odp/plat/ti_mcsdk.h>
+#include <odp/plat/debug.h>
 
 /* Global variables to hold virtual address of various subsystems */
 hplib_virtualAddrInfo_T odp_vm_info;
@@ -710,7 +710,7 @@ void odp_print_mem(void *addr, size_t size, const char *desc)
 
 	start_ptr = addr;
 	end_ptr = start_ptr + size;
-	ptr = (typeof(ptr))(((uintptr_t)start_ptr) & ~0xF);
+	ptr = (__typeof__(ptr))(((uintptr_t)start_ptr) & ~0xF);
 
 	while (ptr < end_ptr) {
 		printf("0x%08x: ", (unsigned int)ptr);
diff --git a/platform/linux-keystone2/mcsdk/mcsdk_navig.c b/platform/linux-keystone2/mcsdk/mcsdk_navig.c
index bdfc8e1..c3009b7 100644
--- a/platform/linux-keystone2/mcsdk/mcsdk_navig.c
+++ b/platform/linux-keystone2/mcsdk/mcsdk_navig.c
@@ -13,10 +13,10 @@
 #include <sys/mman.h>
 #include <errno.h>
 #include <unistd.h>
-#include <odp_state.h>
+#include <odp/plat/state.h>
 
-#include <odp_ti_mcsdk.h>
-#include <odp_debug_internal.h>
+#include <odp/plat/ti_mcsdk.h>
+#include <odp/plat/debug.h>
 
 extern Qmss_GlobalConfigParams qmssGblCfgParams;
 extern Cppi_GlobalConfigParams cppiGblCfgParams;
diff --git a/platform/linux-keystone2/mcsdk/mcsdk_rmclient.c b/platform/linux-keystone2/mcsdk/mcsdk_rmclient.c
index c42c691..689de1d 100644
--- a/platform/linux-keystone2/mcsdk/mcsdk_rmclient.c
+++ b/platform/linux-keystone2/mcsdk/mcsdk_rmclient.c
@@ -17,8 +17,8 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
-#include <odp_ti_mcsdk.h>
-#include <odp_debug_internal.h>
+#include <odp/plat/ti_mcsdk.h>
+#include <odp/plat/debug.h>
 
 /* Socket Includes */
 #include "sockutils.h"
diff --git a/platform/linux-keystone2/mcsdk/sockutils.c b/platform/linux-keystone2/mcsdk/sockutils.c
index b31e8cc..d4d93fc 100644
--- a/platform/linux-keystone2/mcsdk/sockutils.c
+++ b/platform/linux-keystone2/mcsdk/sockutils.c
@@ -17,7 +17,7 @@
 #include <sys/ioctl.h>
 
 #include "sockutils.h"
-#include "odp_debug_internal.h"
+#include <odp/plat/debug.h>
 
 typedef struct sock_data {
 	struct sockaddr_un addr;
diff --git a/platform/linux-keystone2/odp_init.c b/platform/linux-keystone2/odp_init.c
index 4e9783d..1fde2ce 100644
--- a/platform/linux-keystone2/odp_init.c
+++ b/platform/linux-keystone2/odp_init.c
@@ -7,8 +7,9 @@
  */
 
 #include <odp/init.h>
-#include <odp/debug.h>
+#include <odp/plat/debug.h>
 #include <odp/config.h>
+#include <odp/hints.h>
 #include <odp_internal.h>
 
 struct odp_global_s *odp_global;
@@ -18,6 +19,16 @@ __thread struct odp_local_s odp_local;
 int odp_init_global(odp_init_t *params ODP_UNUSED,
                     odp_platform_init_t *platform_params ODP_UNUSED)
 {
+	odp_proc.log_fn = odp_override_log;
+	odp_proc.abort_fn = odp_override_abort;
+
+	if (params != NULL) {
+		if (params->log_fn != NULL)
+			odp_proc.log_fn = params->log_fn;
+		if (params->abort_fn != NULL)
+			odp_proc.abort_fn = params->abort_fn;
+	}
+
 	odp_system_info_init();
 
 	if (odp_shm_init_global()) {
