summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.transmeta.com>2002-11-16 22:25:51 -0800
committerLinus Torvalds <torvalds@home.transmeta.com>2002-11-16 22:25:51 -0800
commitd3131293a9b3e7328bf08bf3d27713af2bf928a8 (patch)
tree535852ef4ea4acb24bc3504c002397406061d0ad
parenta21061828c8555eeb0c86370881105f94efa20ff (diff)
Initialize exception tables early - don't use an initcall,
since they are needed for early arch initialization. Thanks to Manfred for pointing this out.
-rw-r--r--init/main.c2
-rw-r--r--kernel/module.c6
2 files changed, 3 insertions, 5 deletions
diff --git a/init/main.c b/init/main.c
index 39d3522d3750..f9230123ec87 100644
--- a/init/main.c
+++ b/init/main.c
@@ -63,6 +63,7 @@ extern void init_IRQ(void);
extern void init_modules(void);
extern void sock_init(void);
extern void fork_init(unsigned long);
+extern void extable_init(void);
extern void mca_init(void);
extern void sbus_init(void);
extern void sysctl_init(void);
@@ -394,6 +395,7 @@ asmlinkage void __init start_kernel(void)
printk("Kernel command line: %s\n", saved_command_line);
parse_options(command_line);
trap_init();
+ extable_init();
rcu_init();
init_IRQ();
sched_init();
diff --git a/kernel/module.c b/kernel/module.c
index 920cc7b184af..82aa7ebe6694 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1188,7 +1188,7 @@ struct seq_operations modules_op = {
.show = m_show
};
-static int __init init(void)
+void __init extable_init(void)
{
/* Add kernel symbols to symbol table */
kernel_symbols.num_syms = (__stop___ksymtab - __start___ksymtab);
@@ -1199,12 +1199,8 @@ static int __init init(void)
kernel_extable.num_entries = (__stop___ex_table -__start___ex_table);
kernel_extable.entry = __start___ex_table;
list_add(&kernel_extable.list, &extables);
- return 0;
}
/* Obsolete lvalue for broken code which asks about usage */
int module_dummy_usage = 1;
EXPORT_SYMBOL(module_dummy_usage);
-
-/* Call this at boot */
-__initcall(init);