|
@@ -1,14 +1,14 @@
|
|
/*
|
|
/*
|
|
- * This file is subject to the terms and conditions of the GNU General Public
|
|
|
|
- * License. See the file "COPYING" in the main directory of this archive
|
|
|
|
- * for more details.
|
|
|
|
- *
|
|
|
|
- * arch/sh64/mm/extable.c
|
|
|
|
|
|
+ * arch/sh/mm/extable_64.c
|
|
*
|
|
*
|
|
* Copyright (C) 2003 Richard Curnow
|
|
* Copyright (C) 2003 Richard Curnow
|
|
* Copyright (C) 2003, 2004 Paul Mundt
|
|
* Copyright (C) 2003, 2004 Paul Mundt
|
|
*
|
|
*
|
|
* Cloned from the 2.5 SH version..
|
|
* Cloned from the 2.5 SH version..
|
|
|
|
+ *
|
|
|
|
+ * This file is subject to the terms and conditions of the GNU General Public
|
|
|
|
+ * License. See the file "COPYING" in the main directory of this archive
|
|
|
|
+ * for more details.
|
|
*/
|
|
*/
|
|
#include <linux/rwsem.h>
|
|
#include <linux/rwsem.h>
|
|
#include <linux/module.h>
|
|
#include <linux/module.h>
|
|
@@ -21,13 +21,16 @@ static const struct exception_table_entry __copy_user_fixup_ex = {
|
|
.fixup = (unsigned long)&__copy_user_fixup,
|
|
.fixup = (unsigned long)&__copy_user_fixup,
|
|
};
|
|
};
|
|
|
|
|
|
-/* Some functions that may trap due to a bad user-mode address have too many loads
|
|
|
|
- and stores in them to make it at all practical to label each one and put them all in
|
|
|
|
- the main exception table.
|
|
|
|
-
|
|
|
|
- In particular, the fast memcpy routine is like this. It's fix-up is just to fall back
|
|
|
|
- to a slow byte-at-a-time copy, which is handled the conventional way. So it's functionally
|
|
|
|
- OK to just handle any trap occurring in the fast memcpy with that fixup. */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Some functions that may trap due to a bad user-mode address have too
|
|
|
|
+ * many loads and stores in them to make it at all practical to label
|
|
|
|
+ * each one and put them all in the main exception table.
|
|
|
|
+ *
|
|
|
|
+ * In particular, the fast memcpy routine is like this. It's fix-up is
|
|
|
|
+ * just to fall back to a slow byte-at-a-time copy, which is handled the
|
|
|
|
+ * conventional way. So it's functionally OK to just handle any trap
|
|
|
|
+ * occurring in the fast memcpy with that fixup.
|
|
|
|
+ */
|
|
static const struct exception_table_entry *check_exception_ranges(unsigned long addr)
|
|
static const struct exception_table_entry *check_exception_ranges(unsigned long addr)
|
|
{
|
|
{
|
|
if ((addr >= (unsigned long)©_user_memcpy) &&
|
|
if ((addr >= (unsigned long)©_user_memcpy) &&
|
|
@@ -77,4 +80,3 @@ int fixup_exception(struct pt_regs *regs)
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
-
|
|
|