diff options
Diffstat (limited to 'arch/sh/mm/extable_64.c')
-rw-r--r-- | arch/sh/mm/extable_64.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/arch/sh/mm/extable_64.c b/arch/sh/mm/extable_64.c index a2e6e056377..f05499688d8 100644 --- a/arch/sh/mm/extable_64.c +++ b/arch/sh/mm/extable_64.c | |||
@@ -1,14 +1,14 @@ | |||
1 | /* | 1 | /* |
2 | * This file is subject to the terms and conditions of the GNU General Public | 2 | * arch/sh/mm/extable_64.c |
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * arch/sh64/mm/extable.c | ||
7 | * | 3 | * |
8 | * Copyright (C) 2003 Richard Curnow | 4 | * Copyright (C) 2003 Richard Curnow |
9 | * Copyright (C) 2003, 2004 Paul Mundt | 5 | * Copyright (C) 2003, 2004 Paul Mundt |
10 | * | 6 | * |
11 | * Cloned from the 2.5 SH version.. | 7 | * Cloned from the 2.5 SH version.. |
8 | * | ||
9 | * This file is subject to the terms and conditions of the GNU General Public | ||
10 | * License. See the file "COPYING" in the main directory of this archive | ||
11 | * for more details. | ||
12 | */ | 12 | */ |
13 | #include <linux/rwsem.h> | 13 | #include <linux/rwsem.h> |
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
@@ -21,13 +21,16 @@ static const struct exception_table_entry __copy_user_fixup_ex = { | |||
21 | .fixup = (unsigned long)&__copy_user_fixup, | 21 | .fixup = (unsigned long)&__copy_user_fixup, |
22 | }; | 22 | }; |
23 | 23 | ||
24 | /* Some functions that may trap due to a bad user-mode address have too many loads | 24 | /* |
25 | and stores in them to make it at all practical to label each one and put them all in | 25 | * Some functions that may trap due to a bad user-mode address have too |
26 | the main exception table. | 26 | * many loads and stores in them to make it at all practical to label |
27 | 27 | * each one and put them all in the main exception table. | |
28 | In particular, the fast memcpy routine is like this. It's fix-up is just to fall back | 28 | * |
29 | to a slow byte-at-a-time copy, which is handled the conventional way. So it's functionally | 29 | * In particular, the fast memcpy routine is like this. It's fix-up is |
30 | OK to just handle any trap occurring in the fast memcpy with that fixup. */ | 30 | * just to fall back to a slow byte-at-a-time copy, which is handled the |
31 | * conventional way. So it's functionally OK to just handle any trap | ||
32 | * occurring in the fast memcpy with that fixup. | ||
33 | */ | ||
31 | static const struct exception_table_entry *check_exception_ranges(unsigned long addr) | 34 | static const struct exception_table_entry *check_exception_ranges(unsigned long addr) |
32 | { | 35 | { |
33 | if ((addr >= (unsigned long)©_user_memcpy) && | 36 | if ((addr >= (unsigned long)©_user_memcpy) && |
@@ -77,4 +80,3 @@ int fixup_exception(struct pt_regs *regs) | |||
77 | 80 | ||
78 | return 0; | 81 | return 0; |
79 | } | 82 | } |
80 | |||