11965aae3SH. Peter Anvin #ifndef _ASM_X86_SETUP_H 21965aae3SH. Peter Anvin #define _ASM_X86_SETUP_H 3bb898558SAl Viro 4af170c50SDavid Howells #include <uapi/asm/setup.h> 5af170c50SDavid Howells 6dbca1df4SCyrill Gorcunov 7bb898558SAl Viro #define COMMAND_LINE_SIZE 2048 8bb898558SAl Viro 9*a1ed4ddfSAndi Kleen #include <linux/linkage.h> 10*a1ed4ddfSAndi Kleen 11bb898558SAl Viro #ifdef __i386__ 12bb898558SAl Viro 13bb898558SAl Viro #include <linux/pfn.h> 14bb898558SAl Viro /* 15bb898558SAl Viro * Reserved space for vmalloc and iomap - defined in asm/page.h 16bb898558SAl Viro */ 17bb898558SAl Viro #define MAXMEM_PFN PFN_DOWN(MAXMEM) 18bb898558SAl Viro #define MAX_NONPAE_PFN (1 << 20) 19bb898558SAl Viro 20bb898558SAl Viro #endif /* __i386__ */ 21bb898558SAl Viro 22bb898558SAl Viro #define PARAM_SIZE 4096 /* sizeof(struct boot_params) */ 23bb898558SAl Viro 24bb898558SAl Viro #define OLD_CL_MAGIC 0xA33F 25bb898558SAl Viro #define OLD_CL_ADDRESS 0x020 /* Relative to real mode data */ 26bb898558SAl Viro #define NEW_CL_POINTER 0x228 /* Relative to real mode data */ 27bb898558SAl Viro 28bb898558SAl Viro #ifndef __ASSEMBLY__ 29bb898558SAl Viro #include <asm/bootparam.h> 30845b3944SThomas Gleixner #include <asm/x86_init.h> 31bb898558SAl Viro 3215c55443SJaswinder Singh Rajput /* Interrupt control for vSMPowered x86_64 systems */ 3370511134SRavikiran G Thirumalai #ifdef CONFIG_X86_64 3415c55443SJaswinder Singh Rajput void vsmp_init(void); 35129d8bc8SYinghai Lu #else 36129d8bc8SYinghai Lu static inline void vsmp_init(void) { } 37129d8bc8SYinghai Lu #endif 3815c55443SJaswinder Singh Rajput 3915c55443SJaswinder Singh Rajput void setup_bios_corruption_check(void); 4015c55443SJaswinder Singh Rajput 4115c55443SJaswinder Singh Rajput #ifdef CONFIG_X86_VISWS 4215c55443SJaswinder Singh Rajput extern void visws_early_detect(void); 4315c55443SJaswinder Singh Rajput #else 4415c55443SJaswinder Singh Rajput static inline void visws_early_detect(void) { } 4515c55443SJaswinder Singh Rajput #endif 4615c55443SJaswinder Singh Rajput 4715c55443SJaswinder Singh Rajput extern unsigned long saved_video_mode; 4815c55443SJaswinder Singh Rajput 498fee697dSThomas Gleixner extern void reserve_standard_io_resources(void); 508fee697dSThomas Gleixner extern void i386_reserve_resources(void); 51845b3944SThomas Gleixner extern void setup_default_timer_irq(void); 528fee697dSThomas Gleixner 53933b9463SAlan Cox #ifdef CONFIG_X86_INTEL_MID 543f4110a4SThomas Gleixner extern void x86_mrst_early_setup(void); 553f4110a4SThomas Gleixner #else 563f4110a4SThomas Gleixner static inline void x86_mrst_early_setup(void) { } 573f4110a4SThomas Gleixner #endif 583f4110a4SThomas Gleixner 59c751e17bSThomas Gleixner #ifdef CONFIG_X86_INTEL_CE 60c751e17bSThomas Gleixner extern void x86_ce4100_early_setup(void); 61c751e17bSThomas Gleixner #else 62c751e17bSThomas Gleixner static inline void x86_ce4100_early_setup(void) { } 63c751e17bSThomas Gleixner #endif 64c751e17bSThomas Gleixner 65bb898558SAl Viro #ifndef _SETUP 66bb898558SAl Viro 67bb898558SAl Viro /* 68bb898558SAl Viro * This is set up by the setup-routine at boot-time 69bb898558SAl Viro */ 70bb898558SAl Viro extern struct boot_params boot_params; 71bb898558SAl Viro 72bb898558SAl Viro /* 73bb898558SAl Viro * Do NOT EVER look at the BIOS memory size location. 74bb898558SAl Viro * It does not work on many machines. 75bb898558SAl Viro */ 76bb898558SAl Viro #define LOWMEMSIZE() (0x9f000) 77bb898558SAl Viro 7893dbda7cSJeremy Fitzhardinge /* exceedingly early brk-like allocator */ 7993dbda7cSJeremy Fitzhardinge extern unsigned long _brk_end; 8093dbda7cSJeremy Fitzhardinge void *extend_brk(size_t size, size_t align); 8193dbda7cSJeremy Fitzhardinge 82796216a5SJeremy Fitzhardinge /* 83796216a5SJeremy Fitzhardinge * Reserve space in the brk section. The name must be unique within 84796216a5SJeremy Fitzhardinge * the file, and somewhat descriptive. The size is in bytes. Must be 85796216a5SJeremy Fitzhardinge * used at file scope. 86796216a5SJeremy Fitzhardinge * 87796216a5SJeremy Fitzhardinge * (This uses a temp function to wrap the asm so we can pass it the 88796216a5SJeremy Fitzhardinge * size parameter; otherwise we wouldn't be able to. We can't use a 89796216a5SJeremy Fitzhardinge * "section" attribute on a normal variable because it always ends up 90796216a5SJeremy Fitzhardinge * being @progbits, which ends up allocating space in the vmlinux 91796216a5SJeremy Fitzhardinge * executable.) 92796216a5SJeremy Fitzhardinge */ 93796216a5SJeremy Fitzhardinge #define RESERVE_BRK(name,sz) \ 942895cd2aSSteven Rostedt static void __section(.discard.text) __used notrace \ 95796216a5SJeremy Fitzhardinge __brk_reservation_fn_##name##__(void) { \ 96796216a5SJeremy Fitzhardinge asm volatile ( \ 97796216a5SJeremy Fitzhardinge ".pushsection .brk_reservation,\"aw\",@nobits;" \ 980b1c723dSJeremy Fitzhardinge ".brk." #name ":" \ 99796216a5SJeremy Fitzhardinge " 1:.skip %c0;" \ 1000b1c723dSJeremy Fitzhardinge " .size .brk." #name ", . - 1b;" \ 101796216a5SJeremy Fitzhardinge " .popsection" \ 102796216a5SJeremy Fitzhardinge : : "i" (sz)); \ 103796216a5SJeremy Fitzhardinge } 104796216a5SJeremy Fitzhardinge 105161b0275SJeremy Fitzhardinge /* Helper for reserving space for arrays of things */ 106161b0275SJeremy Fitzhardinge #define RESERVE_BRK_ARRAY(type, name, entries) \ 107161b0275SJeremy Fitzhardinge type *name; \ 108161b0275SJeremy Fitzhardinge RESERVE_BRK(name, sizeof(type) * entries) 109161b0275SJeremy Fitzhardinge 1105d94e81fSDan Williams extern void probe_roms(void); 111bb898558SAl Viro #ifdef __i386__ 112bb898558SAl Viro 113*a1ed4ddfSAndi Kleen asmlinkage void __init i386_start_kernel(void); 114bb898558SAl Viro 115bb898558SAl Viro #else 116*a1ed4ddfSAndi Kleen asmlinkage void __init x86_64_start_kernel(char *real_mode); 117*a1ed4ddfSAndi Kleen asmlinkage void __init x86_64_start_reservations(char *real_mode_data); 118bb898558SAl Viro 119bb898558SAl Viro #endif /* __i386__ */ 120bb898558SAl Viro #endif /* _SETUP */ 121796216a5SJeremy Fitzhardinge #else 122796216a5SJeremy Fitzhardinge #define RESERVE_BRK(name,sz) \ 123796216a5SJeremy Fitzhardinge .pushsection .brk_reservation,"aw",@nobits; \ 1240b1c723dSJeremy Fitzhardinge .brk.name: \ 125796216a5SJeremy Fitzhardinge 1: .skip sz; \ 1260b1c723dSJeremy Fitzhardinge .size .brk.name,.-1b; \ 127796216a5SJeremy Fitzhardinge .popsection 128bb898558SAl Viro #endif /* __ASSEMBLY__ */ 1291965aae3SH. Peter Anvin #endif /* _ASM_X86_SETUP_H */ 130