../unit.c
UNIT_CFILES = $(patsubst ../%,%, $(SHARED_T_FILES))
-kFILES = ../datapath.h \
+HFILES = ../datapath.h \
../chain.h \
../crc32.h \
../flow.h \
#include_next <asm/atomic.h>
#include <asm/system.h>
-#error "Cribbed from linux-2.6/include/asm-mips but not tested."
-
#define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
#endif /* asm/atomic.h */
#include <asm/system.h>
-#error "Cribbed from linux-2.6/include/asm-mips/barrier.h but untested."
-
/* Not sure whether these really need to be defined, but the conservative
* choice seems to be to define them. */
#define CONFIG_WEAK_ORDERING 1
--- /dev/null
+#ifndef __ASM_MIPS_BREAK_H_WRAPPER
+#define __ASM_MIPS_BREAK_H_WRAPPER 1
+
+#include <linux/version.h>
+#include_next <asm/break.h>
+
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,25)
+
+/*
+ * The following break codes are or were in use for specific purposes in
+ * other MIPS operating systems. Linux/MIPS doesn't use all of them. The
+ * unused ones are here as placeholders; we might encounter them in
+ * non-Linux/MIPS object files or make use of them in the future.
+ */
+#define BRK_USERBP 0 /* User bp (used by debuggers) */
+#define BRK_KERNELBP 1 /* Break in the kernel */
+#define BRK_ABORT 2 /* Sometimes used by abort(3) to SIGIOT */
+#define BRK_BD_TAKEN 3 /* For bd slot emulation - not implemented */
+#define BRK_BD_NOTTAKEN 4 /* For bd slot emulation - not implemented */
+#define BRK_SSTEPBP 5 /* User bp (used by debuggers) */
+#define BRK_OVERFLOW 6 /* Overflow check */
+#define BRK_DIVZERO 7 /* Divide by zero check */
+#define BRK_RANGE 8 /* Range error check */
+#define BRK_STACKOVERFLOW 9 /* For Ada stackchecking */
+#define BRK_NORLD 10 /* No rld found - not used by Linux/MIPS */
+#define _BRK_THREADBP 11 /* For threads, user bp (used by debuggers) */
+#define BRK_MULOVF 1023 /* Multiply overflow */
+#define BRK_BUG 512 /* Used by BUG() */
+
+#endif /* linux kernel < 2.4.25 */
+
+#endif /* asm/break.h */
--- /dev/null
+#ifndef __ASM_MIPS_PAGE_H_WRAPPER
+#define __ASM_MIPS_PAGE_H_WRAPPER 1
+
+#include <linux/version.h>
+#include_next <asm/page.h>
+#include <asm/break.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,25)
+
+#define BUG() \
+do { \
+ __asm__ __volatile__("break %0" : : "i" (BRK_BUG)); \
+} while (0)
+
+#endif /* linux kernel < 2.4.25 */
+
+#endif /* asm/page.h */
#include_next <asm/system.h>
-#error "Cribbed from linux-2.6/include/asm-mips/system.h but untested."
-
#define __HAVE_ARCH_CMPXCHG 1
static inline unsigned long __cmpxchg_u32(volatile int * m, unsigned long old,
} else {
unsigned long flags;
- raw_local_irq_save(flags);
+ local_irq_save(flags);
retval = *m;
if (retval == old)
*m = new;
- raw_local_irq_restore(flags); /* implies memory barrier */
+ local_irq_restore(flags); /* implies memory barrier */
}
smp_llsc_mb();
} else {
unsigned long flags;
- raw_local_irq_save(flags);
+ local_irq_save(flags);
retval = *m;
if (retval == old)
*m = new;
- raw_local_irq_restore(flags); /* implies memory barrier */
+ local_irq_restore(flags); /* implies memory barrier */
}
smp_llsc_mb();
#ifndef __LINUX_MODULE_WRAPPER_H
#define __LINUX_MODULE_WRAPPER_H 1
+#include <linux/kernel.h>
#include_next <linux/module.h>
static inline int try_module_get(struct module *module)