Replace exception table insertion sort with lib/sort

Signed-off-by: Matt Mackall <[EMAIL PROTECTED]>

Index: mm2/lib/extable.c
===================================================================
--- mm2.orig/lib/extable.c      2005-01-30 20:33:18.000000000 -0800
+++ mm2/lib/extable.c   2005-01-30 20:40:53.000000000 -0800
@@ -13,6 +13,7 @@
 #include <linux/config.h>
 #include <linux/module.h>
 #include <linux/init.h>
+#include <linux/sort.h>
 #include <asm/uaccess.h>
 
 extern struct exception_table_entry __start___ex_table[];
@@ -25,26 +26,17 @@
  * This is used both for the kernel exception table and for
  * the exception tables of modules that get loaded.
  */
+static int cmp_ex(const void *a, const void *b)
+{
+       const struct exception_table_entry *x = a, *y = b;
+       return x->insn - y->insn;
+}
+
 void sort_extable(struct exception_table_entry *start,
                  struct exception_table_entry *finish)
 {
-       struct exception_table_entry el, *p, *q;
-
-       /* insertion sort */
-       for (p = start + 1; p < finish; ++p) {
-               /* start .. p-1 is sorted */
-               if (p[0].insn < p[-1].insn) {
-                       /* move element p down to its right place */
-                       el = *p;
-                       q = p;
-                       do {
-                               /* el comes before q[-1], move q[-1] up one */
-                               q[0] = q[-1];
-                               --q;
-                       } while (q > start && el.insn < q[-1].insn);
-                       *q = el;
-               }
-       }
+       sort(start, finish - start, sizeof(struct exception_table_entry),
+            cmp_ex, 0);
 }
 #endif
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to