os/linux/src/core/IxOsalOsMsgQ.c      |    2 +-
 os/linux/src/core/IxOsalOsSemaphore.c |    6 +++---
 os/linux/src/core/IxOsalOsServices.c  |   20 ++++++++++++++++----
 os/linux/src/core/IxOsalOsThread.c    |    7 +------
 4 files changed, 21 insertions(+), 14 deletions(-)

--- ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c	1970-01-01 00:00:00.000000000 +0000
+++ ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c	1970-01-01 00:00:00.000000000 +0000
@@ -45,9 +45,9 @@
  * -- End Intel Copyright Notice --
  */
 #include <linux/linkage.h>
+#include <linux/spinlock.h>
 #include <linux/ipc.h>
 #include <linux/msg.h>
-#include <linux/spinlock.h>
 #include <linux/interrupt.h>
 
 #include "IxOsal.h"
--- ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c	1970-01-01 00:00:00.000000000 +0000
+++ ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c	1970-01-01 00:00:00.000000000 +0000
@@ -46,7 +46,7 @@
  */
 
 #include <linux/slab.h>
-#include <asm-arm/hardirq.h>
+#include <linux/hardirq.h>
 #include "IxOsal.h"
 
 /* Define a large number */
@@ -93,7 +93,7 @@ ixOsalSemaphoreWait (IxOsalOsSemaphore *
 {
 
     IX_STATUS ixStatus = IX_SUCCESS;
-    UINT32 timeoutTime;
+    unsigned long timeoutTime;
 
     if (sid == NULL)
     {
@@ -261,7 +261,7 @@ ixOsalMutexInit (IxOsalMutex * mutex)
 PUBLIC IX_STATUS
 ixOsalMutexLock (IxOsalMutex * mutex, INT32 timeout)
 {
-    UINT32 timeoutTime;
+    unsigned long timeoutTime;
 
     if (in_irq ())
     {
--- ixp_osal/os/linux/src/core/IxOsalOsServices.c	1970-01-01 00:00:00.000000000 +0000
+++ ixp_osal/os/linux/src/core/IxOsalOsServices.c	1970-01-01 00:00:00.000000000 +0000
@@ -54,6 +54,7 @@
 #include <linux/time.h>
 #include <linux/sched.h>
 #include <linux/slab.h>
+#include <linux/interrupt.h>
 
 #include "IxOsal.h"
 
@@ -89,7 +90,7 @@ static IxOsalInfoType IxOsalInfo[NR_IRQS
 /*
  * General interrupt handler
  */
-static void
+static irqreturn_t
 ixOsalOsIsrProxy (int irq, void *dev_id, struct pt_regs *regs)
 {
     IxOsalInfoType *isr_proxy_info = (IxOsalInfoType *) dev_id;
@@ -98,6 +99,7 @@ ixOsalOsIsrProxy (int irq, void *dev_id,
 		   "ixOsalOsIsrProxy: Interrupt used before ixOsalIrqBind was invoked");
 
     isr_proxy_info->routine (isr_proxy_info->parameter);
+    return IRQ_HANDLED;
 }
 
 /*
@@ -105,11 +107,12 @@ ixOsalOsIsrProxy (int irq, void *dev_id,
  * This handler saves the interrupted Program Counter (PC)
  * into a global variable
  */
-static void
+static irqreturn_t
 ixOsalOsIsrProxyWithPC (int irq, void *dev_id, struct pt_regs *regs)
 {
     ixOsalLinuxInterruptedPc = regs->ARM_pc;
     ixOsalOsIsrProxy(irq, dev_id, regs);
+    return IRQ_HANDLED;
 }
 
 /**************************************
@@ -191,10 +194,15 @@ ixOsalIrqUnbind (UINT32 vector)
 PUBLIC UINT32
 ixOsalIrqLock ()
 {
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
+    unsigned long flags;
+    local_irq_save(flags);
+#else
     UINT32 flags;
     save_flags (flags);
     cli ();
-    return flags;
+#endif
+    return (UINT32)flags;
 }
 
 /* Enable interrupts and task scheduling,
@@ -204,7 +212,11 @@ ixOsalIrqLock ()
 PUBLIC void
 ixOsalIrqUnlock (UINT32 lockKey)
 {
+# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
+    local_irq_restore((unsigned long)lockKey);
+# else
     restore_flags (lockKey);
+# endif
 }
 
 PUBLIC UINT32
@@ -329,7 +341,7 @@ ixOsalBusySleep (UINT32 microseconds)
 PUBLIC void
 ixOsalSleep (UINT32 milliseconds)
 {
-    if (milliseconds != 0)
+    if (milliseconds*HZ >= 1000)
     {
         set_current_state(TASK_INTERRUPTIBLE); 
         schedule_timeout ((milliseconds * HZ) / 1000);
--- ixp_osal/os/linux/src/core/IxOsalOsThread.c	1970-01-01 00:00:00.000000000 +0000
+++ ixp_osal/os/linux/src/core/IxOsalOsThread.c	1970-01-01 00:00:00.000000000 +0000
@@ -65,12 +65,7 @@ thread_internal (void *unused)
     void *arg = IxOsalOsThreadData.arg;
     static int seq = 0;
 
-    daemonize ();
-    reparent_to_init ();
-
-    exit_files (current);
-
-    snprintf(current->comm, sizeof(current->comm), "IxOsal %d", ++seq);
+    daemonize ("IxOsal %d", ++seq);
 
     up (&IxOsalThreadMutex);