1*bb898558SAl Viro #ifndef ASM_X86__SETUP_H 2*bb898558SAl Viro #define ASM_X86__SETUP_H 3*bb898558SAl Viro 4*bb898558SAl Viro #define COMMAND_LINE_SIZE 2048 5*bb898558SAl Viro 6*bb898558SAl Viro #ifndef __ASSEMBLY__ 7*bb898558SAl Viro 8*bb898558SAl Viro /* Interrupt control for vSMPowered x86_64 systems */ 9*bb898558SAl Viro void vsmp_init(void); 10*bb898558SAl Viro 11*bb898558SAl Viro #ifdef CONFIG_X86_VISWS 12*bb898558SAl Viro extern void visws_early_detect(void); 13*bb898558SAl Viro extern int is_visws_box(void); 14*bb898558SAl Viro #else 15*bb898558SAl Viro static inline void visws_early_detect(void) { } 16*bb898558SAl Viro static inline int is_visws_box(void) { return 0; } 17*bb898558SAl Viro #endif 18*bb898558SAl Viro 19*bb898558SAl Viro /* 20*bb898558SAl Viro * Any setup quirks to be performed? 21*bb898558SAl Viro */ 22*bb898558SAl Viro struct mpc_config_processor; 23*bb898558SAl Viro struct mpc_config_bus; 24*bb898558SAl Viro struct mp_config_oemtable; 25*bb898558SAl Viro struct x86_quirks { 26*bb898558SAl Viro int (*arch_pre_time_init)(void); 27*bb898558SAl Viro int (*arch_time_init)(void); 28*bb898558SAl Viro int (*arch_pre_intr_init)(void); 29*bb898558SAl Viro int (*arch_intr_init)(void); 30*bb898558SAl Viro int (*arch_trap_init)(void); 31*bb898558SAl Viro char * (*arch_memory_setup)(void); 32*bb898558SAl Viro int (*mach_get_smp_config)(unsigned int early); 33*bb898558SAl Viro int (*mach_find_smp_config)(unsigned int reserve); 34*bb898558SAl Viro 35*bb898558SAl Viro int *mpc_record; 36*bb898558SAl Viro int (*mpc_apic_id)(struct mpc_config_processor *m); 37*bb898558SAl Viro void (*mpc_oem_bus_info)(struct mpc_config_bus *m, char *name); 38*bb898558SAl Viro void (*mpc_oem_pci_bus)(struct mpc_config_bus *m); 39*bb898558SAl Viro void (*smp_read_mpc_oem)(struct mp_config_oemtable *oemtable, 40*bb898558SAl Viro unsigned short oemsize); 41*bb898558SAl Viro int (*setup_ioapic_ids)(void); 42*bb898558SAl Viro }; 43*bb898558SAl Viro 44*bb898558SAl Viro extern struct x86_quirks *x86_quirks; 45*bb898558SAl Viro extern unsigned long saved_video_mode; 46*bb898558SAl Viro 47*bb898558SAl Viro #ifndef CONFIG_PARAVIRT 48*bb898558SAl Viro #define paravirt_post_allocator_init() do {} while (0) 49*bb898558SAl Viro #endif 50*bb898558SAl Viro #endif /* __ASSEMBLY__ */ 51*bb898558SAl Viro 52*bb898558SAl Viro #ifdef __KERNEL__ 53*bb898558SAl Viro 54*bb898558SAl Viro #ifdef __i386__ 55*bb898558SAl Viro 56*bb898558SAl Viro #include <linux/pfn.h> 57*bb898558SAl Viro /* 58*bb898558SAl Viro * Reserved space for vmalloc and iomap - defined in asm/page.h 59*bb898558SAl Viro */ 60*bb898558SAl Viro #define MAXMEM_PFN PFN_DOWN(MAXMEM) 61*bb898558SAl Viro #define MAX_NONPAE_PFN (1 << 20) 62*bb898558SAl Viro 63*bb898558SAl Viro #endif /* __i386__ */ 64*bb898558SAl Viro 65*bb898558SAl Viro #define PARAM_SIZE 4096 /* sizeof(struct boot_params) */ 66*bb898558SAl Viro 67*bb898558SAl Viro #define OLD_CL_MAGIC 0xA33F 68*bb898558SAl Viro #define OLD_CL_ADDRESS 0x020 /* Relative to real mode data */ 69*bb898558SAl Viro #define NEW_CL_POINTER 0x228 /* Relative to real mode data */ 70*bb898558SAl Viro 71*bb898558SAl Viro #ifndef __ASSEMBLY__ 72*bb898558SAl Viro #include <asm/bootparam.h> 73*bb898558SAl Viro 74*bb898558SAl Viro #ifndef _SETUP 75*bb898558SAl Viro 76*bb898558SAl Viro /* 77*bb898558SAl Viro * This is set up by the setup-routine at boot-time 78*bb898558SAl Viro */ 79*bb898558SAl Viro extern struct boot_params boot_params; 80*bb898558SAl Viro 81*bb898558SAl Viro /* 82*bb898558SAl Viro * Do NOT EVER look at the BIOS memory size location. 83*bb898558SAl Viro * It does not work on many machines. 84*bb898558SAl Viro */ 85*bb898558SAl Viro #define LOWMEMSIZE() (0x9f000) 86*bb898558SAl Viro 87*bb898558SAl Viro #ifdef __i386__ 88*bb898558SAl Viro 89*bb898558SAl Viro void __init i386_start_kernel(void); 90*bb898558SAl Viro extern void probe_roms(void); 91*bb898558SAl Viro 92*bb898558SAl Viro extern unsigned long init_pg_tables_start; 93*bb898558SAl Viro extern unsigned long init_pg_tables_end; 94*bb898558SAl Viro 95*bb898558SAl Viro #else 96*bb898558SAl Viro void __init x86_64_init_pda(void); 97*bb898558SAl Viro void __init x86_64_start_kernel(char *real_mode); 98*bb898558SAl Viro void __init x86_64_start_reservations(char *real_mode_data); 99*bb898558SAl Viro 100*bb898558SAl Viro #endif /* __i386__ */ 101*bb898558SAl Viro #endif /* _SETUP */ 102*bb898558SAl Viro #endif /* __ASSEMBLY__ */ 103*bb898558SAl Viro #endif /* __KERNEL__ */ 104*bb898558SAl Viro 105*bb898558SAl Viro #endif /* ASM_X86__SETUP_H */ 106