diff options
Diffstat (limited to 'packages/ixp4xx/ixp-osal-2.1.1/2.6.patch')
-rw-r--r-- | packages/ixp4xx/ixp-osal-2.1.1/2.6.patch | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/packages/ixp4xx/ixp-osal-2.1.1/2.6.patch b/packages/ixp4xx/ixp-osal-2.1.1/2.6.patch new file mode 100644 index 0000000000..9725b447c8 --- /dev/null +++ b/packages/ixp4xx/ixp-osal-2.1.1/2.6.patch @@ -0,0 +1,143 @@ + 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); + |