x86: Move traps_init to x86_init_ops

Replace the quirks by a simple x86_init_ops function.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Thomas Gleixner 2009-08-20 10:35:46 +02:00
parent 66bcaf0bde
commit 428cf9025b
7 changed files with 8 additions and 27 deletions

View File

@ -16,11 +16,8 @@
struct x86_quirks { struct x86_quirks {
int (*arch_pre_time_init)(void); int (*arch_pre_time_init)(void);
int (*arch_time_init)(void); int (*arch_time_init)(void);
int (*arch_trap_init)(void);
}; };
extern void x86_quirk_trap_init(void);
extern void x86_quirk_pre_time_init(void); extern void x86_quirk_pre_time_init(void);
extern void x86_quirk_time_init(void); extern void x86_quirk_time_init(void);

View File

@ -48,10 +48,12 @@ struct x86_init_resources {
* @pre_vector_init: init code to run before interrupt vectors * @pre_vector_init: init code to run before interrupt vectors
* are set up. * are set up.
* @intr_init: interrupt init code * @intr_init: interrupt init code
* @trap_init: platform specific trap setup
*/ */
struct x86_init_irqs { struct x86_init_irqs {
void (*pre_vector_init)(void); void (*pre_vector_init)(void);
void (*intr_init)(void); void (*intr_init)(void);
void (*trap_init)(void);
}; };
/** /**

View File

@ -265,7 +265,6 @@ static void __init smp_read_mpc_oem(struct mpc_table *mpc)
static struct x86_quirks numaq_x86_quirks __initdata = { static struct x86_quirks numaq_x86_quirks __initdata = {
.arch_pre_time_init = numaq_pre_time_init, .arch_pre_time_init = numaq_pre_time_init,
.arch_time_init = NULL, .arch_time_init = NULL,
.arch_trap_init = NULL,
}; };
static __init void early_check_numaq(void) static __init void early_check_numaq(void)

View File

@ -1020,21 +1020,6 @@ void __init setup_arch(char **cmdline_p)
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
/**
* x86_quirk_trap_init - initialise system specific traps
*
* Description:
* Called as the final act of trap_init(). Used in VISWS to initialise
* the various board specific APIC traps.
**/
void __init x86_quirk_trap_init(void)
{
if (x86_quirks->arch_trap_init) {
if (x86_quirks->arch_trap_init())
return;
}
}
static struct irqaction irq0 = { static struct irqaction irq0 = {
.handler = timer_interrupt, .handler = timer_interrupt,
.flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL | IRQF_TIMER, .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL | IRQF_TIMER,

View File

@ -59,6 +59,7 @@
#include <asm/mach_traps.h> #include <asm/mach_traps.h>
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
#include <asm/x86_init.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
#include <asm/proto.h> #include <asm/proto.h>
#else #else
@ -980,7 +981,5 @@ void __init trap_init(void)
*/ */
cpu_init(); cpu_init();
#ifdef CONFIG_X86_32 x86_init.irqs.trap_init();
x86_quirk_trap_init();
#endif
} }

View File

@ -224,11 +224,10 @@ static void __init visws_find_smp_config(unsigned int reserve)
mp_lapic_addr = APIC_DEFAULT_PHYS_BASE; mp_lapic_addr = APIC_DEFAULT_PHYS_BASE;
} }
static int visws_trap_init(void); static void visws_trap_init(void);
static struct x86_quirks visws_x86_quirks __initdata = { static struct x86_quirks visws_x86_quirks __initdata = {
.arch_time_init = visws_time_init, .arch_time_init = visws_time_init,
.arch_trap_init = visws_trap_init,
}; };
void __init visws_early_detect(void) void __init visws_early_detect(void)
@ -252,6 +251,7 @@ void __init visws_early_detect(void)
x86_init.mpparse.get_smp_config = visws_get_smp_config; x86_init.mpparse.get_smp_config = visws_get_smp_config;
x86_init.mpparse.find_smp_config = visws_find_smp_config; x86_init.mpparse.find_smp_config = visws_find_smp_config;
x86_init.irqs.pre_vector_init = visws_pre_intr_init; x86_init.irqs.pre_vector_init = visws_pre_intr_init;
x86_init.irqs.trap_init = visws_trap_init;
/* /*
* Install reboot quirks: * Install reboot quirks:
@ -390,12 +390,10 @@ static __init void cobalt_init(void)
co_apic_read(CO_APIC_ID)); co_apic_read(CO_APIC_ID));
} }
static int __init visws_trap_init(void) static void __init visws_trap_init(void)
{ {
lithium_init(); lithium_init();
cobalt_init(); cobalt_init();
return 1;
} }
/* /*

View File

@ -40,5 +40,6 @@ struct __initdata x86_init_ops x86_init = {
.irqs = { .irqs = {
.pre_vector_init = init_ISA_irqs, .pre_vector_init = init_ISA_irqs,
.intr_init = native_init_IRQ, .intr_init = native_init_IRQ,
.trap_init = x86_init_noop,
}, },
}; };