Commit d3131293 authored by Linus Torvalds's avatar Linus Torvalds

Initialize exception tables early - don't use an initcall,

since they are needed for early arch initialization.

Thanks to Manfred for pointing this out.
parent a2106182
...@@ -63,6 +63,7 @@ extern void init_IRQ(void); ...@@ -63,6 +63,7 @@ extern void init_IRQ(void);
extern void init_modules(void); extern void init_modules(void);
extern void sock_init(void); extern void sock_init(void);
extern void fork_init(unsigned long); extern void fork_init(unsigned long);
extern void extable_init(void);
extern void mca_init(void); extern void mca_init(void);
extern void sbus_init(void); extern void sbus_init(void);
extern void sysctl_init(void); extern void sysctl_init(void);
...@@ -394,6 +395,7 @@ asmlinkage void __init start_kernel(void) ...@@ -394,6 +395,7 @@ asmlinkage void __init start_kernel(void)
printk("Kernel command line: %s\n", saved_command_line); printk("Kernel command line: %s\n", saved_command_line);
parse_options(command_line); parse_options(command_line);
trap_init(); trap_init();
extable_init();
rcu_init(); rcu_init();
init_IRQ(); init_IRQ();
sched_init(); sched_init();
......
...@@ -1188,7 +1188,7 @@ struct seq_operations modules_op = { ...@@ -1188,7 +1188,7 @@ struct seq_operations modules_op = {
.show = m_show .show = m_show
}; };
static int __init init(void) void __init extable_init(void)
{ {
/* Add kernel symbols to symbol table */ /* Add kernel symbols to symbol table */
kernel_symbols.num_syms = (__stop___ksymtab - __start___ksymtab); kernel_symbols.num_syms = (__stop___ksymtab - __start___ksymtab);
...@@ -1199,12 +1199,8 @@ static int __init init(void) ...@@ -1199,12 +1199,8 @@ static int __init init(void)
kernel_extable.num_entries = (__stop___ex_table -__start___ex_table); kernel_extable.num_entries = (__stop___ex_table -__start___ex_table);
kernel_extable.entry = __start___ex_table; kernel_extable.entry = __start___ex_table;
list_add(&kernel_extable.list, &extables); list_add(&kernel_extable.list, &extables);
return 0;
} }
/* Obsolete lvalue for broken code which asks about usage */ /* Obsolete lvalue for broken code which asks about usage */
int module_dummy_usage = 1; int module_dummy_usage = 1;
EXPORT_SYMBOL(module_dummy_usage); EXPORT_SYMBOL(module_dummy_usage);
/* Call this at boot */
__initcall(init);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment