diff options
author | David Daney <david.daney@cavium.com> | 2012-04-19 17:59:56 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2012-04-19 18:06:55 -0400 |
commit | d219e2e86a407035303b987e4184ca0b1de53257 (patch) | |
tree | be4d5b013da158a749064a24716dbeb628ff1f9c /kernel/extable.c | |
parent | a79f248b9b309ebb5f34ca6a8fd1eb9e18db5720 (diff) |
extable: Skip sorting if sorted at build time.
If the build program sortextable has already sorted the exception
table, don't sort it again.
Signed-off-by: David Daney <david.daney@cavium.com>
Link: http://lkml.kernel.org/r/1334872799-14589-3-git-send-email-ddaney.cavm@gmail.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'kernel/extable.c')
-rw-r--r-- | kernel/extable.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/extable.c b/kernel/extable.c index 5339705b8241..fe35a634bf76 100644 --- a/kernel/extable.c +++ b/kernel/extable.c | |||
@@ -35,10 +35,16 @@ DEFINE_MUTEX(text_mutex); | |||
35 | extern struct exception_table_entry __start___ex_table[]; | 35 | extern struct exception_table_entry __start___ex_table[]; |
36 | extern struct exception_table_entry __stop___ex_table[]; | 36 | extern struct exception_table_entry __stop___ex_table[]; |
37 | 37 | ||
38 | /* Cleared by build time tools if the table is already sorted. */ | ||
39 | u32 __initdata main_extable_sort_needed = 1; | ||
40 | |||
38 | /* Sort the kernel's built-in exception table */ | 41 | /* Sort the kernel's built-in exception table */ |
39 | void __init sort_main_extable(void) | 42 | void __init sort_main_extable(void) |
40 | { | 43 | { |
41 | sort_extable(__start___ex_table, __stop___ex_table); | 44 | if (main_extable_sort_needed) |
45 | sort_extable(__start___ex_table, __stop___ex_table); | ||
46 | else | ||
47 | pr_notice("__ex_table already sorted, skipping sort\n"); | ||
42 | } | 48 | } |
43 | 49 | ||
44 | /* Given an address, look for it in the exception tables. */ | 50 | /* Given an address, look for it in the exception tables. */ |