x86: Replace ARCH_SETUP by a proper x86_init_ops
ARCH_SETUP is a horrible leftover from the old arch/i386 mach support code. It still has a lonely user in xen. Move it to x86_init_ops. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Родитель
428cf9025b
Коммит
42bbdb43b1
|
@ -24,7 +24,6 @@ static inline void load_sp0(struct tss_struct *tss,
|
||||||
PVOP_VCALL2(pv_cpu_ops.load_sp0, tss, thread);
|
PVOP_VCALL2(pv_cpu_ops.load_sp0, tss, thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ARCH_SETUP pv_init_ops.arch_setup();
|
|
||||||
static inline unsigned long get_wallclock(void)
|
static inline unsigned long get_wallclock(void)
|
||||||
{
|
{
|
||||||
return PVOP_CALL0(unsigned long, pv_time_ops.get_wallclock);
|
return PVOP_CALL0(unsigned long, pv_time_ops.get_wallclock);
|
||||||
|
|
|
@ -80,7 +80,6 @@ struct pv_init_ops {
|
||||||
unsigned long addr, unsigned len);
|
unsigned long addr, unsigned len);
|
||||||
|
|
||||||
/* Basic arch-specific setup */
|
/* Basic arch-specific setup */
|
||||||
void (*arch_setup)(void);
|
|
||||||
void (*post_allocator_init)(void);
|
void (*post_allocator_init)(void);
|
||||||
|
|
||||||
/* Print a banner to identify the environment */
|
/* Print a banner to identify the environment */
|
||||||
|
|
|
@ -56,6 +56,14 @@ struct x86_init_irqs {
|
||||||
void (*trap_init)(void);
|
void (*trap_init)(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct x86_init_oem - oem platform specific customizing functions
|
||||||
|
* @arch_setup: platform specific architecure setup
|
||||||
|
*/
|
||||||
|
struct x86_init_oem {
|
||||||
|
void (*arch_setup)(void);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct x86_init_ops - functions for platform specific setup
|
* struct x86_init_ops - functions for platform specific setup
|
||||||
*
|
*
|
||||||
|
@ -64,6 +72,7 @@ struct x86_init_ops {
|
||||||
struct x86_init_resources resources;
|
struct x86_init_resources resources;
|
||||||
struct x86_init_mpparse mpparse;
|
struct x86_init_mpparse mpparse;
|
||||||
struct x86_init_irqs irqs;
|
struct x86_init_irqs irqs;
|
||||||
|
struct x86_init_oem oem;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct x86_init_ops x86_init;
|
extern struct x86_init_ops x86_init;
|
||||||
|
|
|
@ -311,7 +311,6 @@ struct pv_info pv_info = {
|
||||||
struct pv_init_ops pv_init_ops = {
|
struct pv_init_ops pv_init_ops = {
|
||||||
.patch = native_patch,
|
.patch = native_patch,
|
||||||
.banner = default_banner,
|
.banner = default_banner,
|
||||||
.arch_setup = paravirt_nop,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct pv_time_ops pv_time_ops = {
|
struct pv_time_ops pv_time_ops = {
|
||||||
|
|
|
@ -108,10 +108,6 @@
|
||||||
#include <asm/numa_64.h>
|
#include <asm/numa_64.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ARCH_SETUP
|
|
||||||
#define ARCH_SETUP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* end_pfn only includes RAM, while max_pfn_mapped includes all e820 entries.
|
* end_pfn only includes RAM, while max_pfn_mapped includes all e820 entries.
|
||||||
* The direct mapping extends to max_pfn_mapped, so that we can directly access
|
* The direct mapping extends to max_pfn_mapped, so that we can directly access
|
||||||
|
@ -750,7 +746,7 @@ void __init setup_arch(char **cmdline_p)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ARCH_SETUP
|
x86_init.oem.arch_setup();
|
||||||
|
|
||||||
setup_memory_map();
|
setup_memory_map();
|
||||||
parse_setup_data();
|
parse_setup_data();
|
||||||
|
|
|
@ -42,4 +42,8 @@ struct __initdata x86_init_ops x86_init = {
|
||||||
.intr_init = native_init_IRQ,
|
.intr_init = native_init_IRQ,
|
||||||
.trap_init = x86_init_noop,
|
.trap_init = x86_init_noop,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
.oem = {
|
||||||
|
.arch_setup = x86_init_noop,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -841,7 +841,6 @@ static const struct pv_init_ops xen_init_ops __initdata = {
|
||||||
.patch = xen_patch,
|
.patch = xen_patch,
|
||||||
|
|
||||||
.banner = xen_banner,
|
.banner = xen_banner,
|
||||||
.arch_setup = xen_arch_setup,
|
|
||||||
.post_allocator_init = xen_post_allocator_init,
|
.post_allocator_init = xen_post_allocator_init,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -982,6 +981,7 @@ asmlinkage void __init xen_start_kernel(void)
|
||||||
pv_mmu_ops = xen_mmu_ops;
|
pv_mmu_ops = xen_mmu_ops;
|
||||||
|
|
||||||
x86_init.resources.memory_setup = xen_memory_setup;
|
x86_init.resources.memory_setup = xen_memory_setup;
|
||||||
|
x86_init.oem.arch_setup = xen_arch_setup;
|
||||||
|
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
/*
|
/*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче