| H. Peter Anvin | 1965aae | 2008-10-22 22:26:29 -0700 | [diff] [blame] | 1 | #ifndef _ASM_X86_SETUP_H | 
 | 2 | #define _ASM_X86_SETUP_H | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 3 |  | 
| Cyrill Gorcunov | dbca1df | 2009-01-14 23:37:50 +0300 | [diff] [blame] | 4 | #ifdef __KERNEL__ | 
 | 5 |  | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 6 | #define COMMAND_LINE_SIZE 2048 | 
 | 7 |  | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 8 | #ifdef __i386__ | 
 | 9 |  | 
 | 10 | #include <linux/pfn.h> | 
 | 11 | /* | 
 | 12 |  * Reserved space for vmalloc and iomap - defined in asm/page.h | 
 | 13 |  */ | 
 | 14 | #define MAXMEM_PFN	PFN_DOWN(MAXMEM) | 
 | 15 | #define MAX_NONPAE_PFN	(1 << 20) | 
 | 16 |  | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 17 | #endif /* __i386__ */ | 
 | 18 |  | 
| H. Peter Anvin | fa76dab | 2007-10-23 22:37:25 +0200 | [diff] [blame] | 19 | #define PARAM_SIZE 4096		/* sizeof(struct boot_params) */ | 
 | 20 |  | 
 | 21 | #define OLD_CL_MAGIC		0xA33F | 
 | 22 | #define OLD_CL_ADDRESS		0x020	/* Relative to real mode data */ | 
 | 23 | #define NEW_CL_POINTER		0x228	/* Relative to real mode data */ | 
 | 24 |  | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 25 | #ifndef __ASSEMBLY__ | 
 | 26 | #include <asm/bootparam.h> | 
| Thomas Gleixner | 845b394 | 2009-08-19 15:37:03 +0200 | [diff] [blame] | 27 | #include <asm/x86_init.h> | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 28 |  | 
| Jaswinder Singh Rajput | 15c5544 | 2009-02-02 21:59:19 +0530 | [diff] [blame] | 29 | /* Interrupt control for vSMPowered x86_64 systems */ | 
| Ravikiran G Thirumalai | 7051113 | 2009-03-23 23:14:29 -0700 | [diff] [blame] | 30 | #ifdef CONFIG_X86_64 | 
| Jaswinder Singh Rajput | 15c5544 | 2009-02-02 21:59:19 +0530 | [diff] [blame] | 31 | void vsmp_init(void); | 
| Yinghai Lu | 129d8bc | 2009-02-25 21:20:50 -0800 | [diff] [blame] | 32 | #else | 
 | 33 | static inline void vsmp_init(void) { } | 
 | 34 | #endif | 
| Jaswinder Singh Rajput | 15c5544 | 2009-02-02 21:59:19 +0530 | [diff] [blame] | 35 |  | 
 | 36 | void setup_bios_corruption_check(void); | 
 | 37 |  | 
 | 38 | #ifdef CONFIG_X86_VISWS | 
 | 39 | extern void visws_early_detect(void); | 
| Jaswinder Singh Rajput | 15c5544 | 2009-02-02 21:59:19 +0530 | [diff] [blame] | 40 | #else | 
 | 41 | static inline void visws_early_detect(void) { } | 
| Jaswinder Singh Rajput | 15c5544 | 2009-02-02 21:59:19 +0530 | [diff] [blame] | 42 | #endif | 
 | 43 |  | 
| Jaswinder Singh Rajput | 15c5544 | 2009-02-02 21:59:19 +0530 | [diff] [blame] | 44 | extern unsigned long saved_video_mode; | 
 | 45 |  | 
| Thomas Gleixner | 8fee697 | 2009-08-19 14:55:50 +0200 | [diff] [blame] | 46 | extern void reserve_standard_io_resources(void); | 
 | 47 | extern void i386_reserve_resources(void); | 
| Thomas Gleixner | 845b394 | 2009-08-19 15:37:03 +0200 | [diff] [blame] | 48 | extern void setup_default_timer_irq(void); | 
| Thomas Gleixner | 8fee697 | 2009-08-19 14:55:50 +0200 | [diff] [blame] | 49 |  | 
| Thomas Gleixner | 3f4110a | 2009-08-29 14:54:20 +0200 | [diff] [blame] | 50 | #ifdef CONFIG_X86_MRST | 
 | 51 | extern void x86_mrst_early_setup(void); | 
 | 52 | #else | 
 | 53 | static inline void x86_mrst_early_setup(void) { } | 
 | 54 | #endif | 
 | 55 |  | 
| H. Peter Anvin | fa76dab | 2007-10-23 22:37:25 +0200 | [diff] [blame] | 56 | #ifndef _SETUP | 
 | 57 |  | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 58 | /* | 
 | 59 |  * This is set up by the setup-routine at boot-time | 
 | 60 |  */ | 
 | 61 | extern struct boot_params boot_params; | 
 | 62 |  | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 63 | /* | 
 | 64 |  * Do NOT EVER look at the BIOS memory size location. | 
 | 65 |  * It does not work on many machines. | 
 | 66 |  */ | 
 | 67 | #define LOWMEMSIZE()	(0x9f000) | 
 | 68 |  | 
| Jeremy Fitzhardinge | 93dbda7 | 2009-02-26 17:35:44 -0800 | [diff] [blame] | 69 | /* exceedingly early brk-like allocator */ | 
 | 70 | extern unsigned long _brk_end; | 
 | 71 | void *extend_brk(size_t size, size_t align); | 
 | 72 |  | 
| Jeremy Fitzhardinge | 796216a | 2009-03-12 16:09:49 -0700 | [diff] [blame] | 73 | /* | 
 | 74 |  * Reserve space in the brk section.  The name must be unique within | 
 | 75 |  * the file, and somewhat descriptive.  The size is in bytes.  Must be | 
 | 76 |  * used at file scope. | 
 | 77 |  * | 
 | 78 |  * (This uses a temp function to wrap the asm so we can pass it the | 
 | 79 |  * size parameter; otherwise we wouldn't be able to.  We can't use a | 
 | 80 |  * "section" attribute on a normal variable because it always ends up | 
 | 81 |  * being @progbits, which ends up allocating space in the vmlinux | 
 | 82 |  * executable.) | 
 | 83 |  */ | 
 | 84 | #define RESERVE_BRK(name,sz)						\ | 
| Jeremy Fitzhardinge | 0b1c723 | 2009-03-14 23:19:38 -0700 | [diff] [blame] | 85 | 	static void __section(.discard) __used				\ | 
| Jeremy Fitzhardinge | 796216a | 2009-03-12 16:09:49 -0700 | [diff] [blame] | 86 | 	__brk_reservation_fn_##name##__(void) {				\ | 
 | 87 | 		asm volatile (						\ | 
 | 88 | 			".pushsection .brk_reservation,\"aw\",@nobits;" \ | 
| Jeremy Fitzhardinge | 0b1c723 | 2009-03-14 23:19:38 -0700 | [diff] [blame] | 89 | 			".brk." #name ":"				\ | 
| Jeremy Fitzhardinge | 796216a | 2009-03-12 16:09:49 -0700 | [diff] [blame] | 90 | 			" 1:.skip %c0;"					\ | 
| Jeremy Fitzhardinge | 0b1c723 | 2009-03-14 23:19:38 -0700 | [diff] [blame] | 91 | 			" .size .brk." #name ", . - 1b;"		\ | 
| Jeremy Fitzhardinge | 796216a | 2009-03-12 16:09:49 -0700 | [diff] [blame] | 92 | 			" .popsection"					\ | 
 | 93 | 			: : "i" (sz));					\ | 
 | 94 | 	} | 
 | 95 |  | 
| Yinghai Lu | 95a71a4 | 2008-06-18 17:27:08 -0700 | [diff] [blame] | 96 | #ifdef __i386__ | 
 | 97 |  | 
| Yinghai Lu | f0d4310 | 2008-05-29 12:56:36 -0700 | [diff] [blame] | 98 | void __init i386_start_kernel(void); | 
| Yinghai Lu | a9c1182 | 2008-06-21 15:39:41 -0700 | [diff] [blame] | 99 | extern void probe_roms(void); | 
| Yinghai Lu | f0d4310 | 2008-05-29 12:56:36 -0700 | [diff] [blame] | 100 |  | 
| Jeremy Fitzhardinge | 102e3b8 | 2008-06-25 00:19:09 -0400 | [diff] [blame] | 101 | #else | 
 | 102 | void __init x86_64_start_kernel(char *real_mode); | 
| Jeremy Fitzhardinge | f97013f | 2008-06-25 00:19:18 -0400 | [diff] [blame] | 103 | void __init x86_64_start_reservations(char *real_mode_data); | 
 | 104 |  | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 105 | #endif /* __i386__ */ | 
| H. Peter Anvin | fa76dab | 2007-10-23 22:37:25 +0200 | [diff] [blame] | 106 | #endif /* _SETUP */ | 
| Jeremy Fitzhardinge | 796216a | 2009-03-12 16:09:49 -0700 | [diff] [blame] | 107 | #else | 
 | 108 | #define RESERVE_BRK(name,sz)				\ | 
 | 109 | 	.pushsection .brk_reservation,"aw",@nobits;	\ | 
| Jeremy Fitzhardinge | 0b1c723 | 2009-03-14 23:19:38 -0700 | [diff] [blame] | 110 | .brk.name:						\ | 
| Jeremy Fitzhardinge | 796216a | 2009-03-12 16:09:49 -0700 | [diff] [blame] | 111 | 1:	.skip sz;					\ | 
| Jeremy Fitzhardinge | 0b1c723 | 2009-03-14 23:19:38 -0700 | [diff] [blame] | 112 | 	.size .brk.name,.-1b;				\ | 
| Jeremy Fitzhardinge | 796216a | 2009-03-12 16:09:49 -0700 | [diff] [blame] | 113 | 	.popsection | 
| Thomas Gleixner | ef68529 | 2007-10-23 22:37:24 +0200 | [diff] [blame] | 114 | #endif /* __ASSEMBLY__ */ | 
 | 115 | #endif  /*  __KERNEL__  */ | 
 | 116 |  | 
| H. Peter Anvin | 1965aae | 2008-10-22 22:26:29 -0700 | [diff] [blame] | 117 | #endif /* _ASM_X86_SETUP_H */ |