+#define _WITHIN_CPU_DEF_H
+#include <irq_generic.h>
+#undef _WITHIN_CPU_DEF_H
+
+extern void **irq_context_table;
+extern irq_handler_t **irq_handler_table;
+extern unsigned int irq_table_size;
+
+/* Arithmetic functions */
+#if 0
+/* ARM v5E architecture - DSP extension */
+
+#define sat_add_slsl(__x,__y) \
+ __asm__ (" qadd %0,%0,%2\n" \
+ : "=r"(__x) \
+ : "0" ((long)__x), "r" ((long)__y) : "cc"); \
+
+#define sat_sub_slsl(__x,__y) \
+ __asm__ (" qsub %0,%0,%2\n" \
+ : "=r"(__x) \
+ : "0" ((long)__x), "r" ((long)__y) : "cc"); \
+
+#elif !defined(__thumb__)
+/* Regular 32-bit ARM architecture */
+
+#define sat_add_slsl(__x,__y) \
+ __asm__ (" adds %0,%2\n" \
+ " eorvs %0,%2,#0x80000000\n" \
+ " sbcvs %0,%0,%2\n" \
+ : "=r"(__x) \
+ : "0" ((long)__x), "r" ((long)__y) : "cc"); \
+
+#define sat_sub_slsl(__x,__y) \
+ __asm__ (" subs %0,%2\n" \
+ " eorvs %0,%2,#0x80000000\n" \
+ " sbcvs %0,%0,%2\n" \
+ : "=r"(__x) \
+ : "0" ((long)__x), "r" ((long)__y) : "cc"); \
+
+#elif defined(__thumb2__) || defined (__ARM_ARCH_6M__)
+
+#define sat_add_slsl(__x,__y) \
+ __asm__ (" adds %0,%2\n" \
+ " itt vs\n" \
+ " eorsvs %0,%3,%2\n" \
+ " sbcsvs %0,%0,%2\n" \
+ : "=r"(__x) \
+ : "0" ((long)__x), "r" ((long)__y), "r" (0x80000000): "cc"); \
+
+#define sat_sub_slsl(__x,__y) \
+ __asm__ (" subs %0,%2\n" \
+ " itt vs\n" \
+ " eorsvs %0,%3,%2\n" \
+ " sbcsvs %0,%0,%2\n" \
+ : "=r"(__x) \
+ : "0" ((long)__x), "r" ((long)__y), "r" (0x80000000) : "cc"); \