uml: use PAGE_SIZE in linker scripts
This patch includes page.h header into linker scripts that allow us to use PAGE_SIZE macro instead of numeric constant. To be able to include page.h into linker scripts page.h is needed for some modification - i.e. we need to use __ASSEMBLY__ and _AC macro [jdike@linux.intel.com - fixed conflict with as-layout.h] Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Jeff Dike <jdike@linux.intel.com> Cc: WANG Cong <xiyou.wangcong@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									6d0742426c
								
							
						
					
					
						commit
						a7dfa9403b
					
				| @ -23,16 +23,16 @@ | ||||
|  */ | ||||
| 
 | ||||
| #ifdef __ASSEMBLY__ | ||||
| #define _AC(X, Y)	(Y) | ||||
| #define _UML_AC(X, Y)	(Y) | ||||
| #else | ||||
| #define __AC(X, Y)	(X (Y)) | ||||
| #define _AC(X, Y)	__AC(X, Y) | ||||
| #define __UML_AC(X, Y)	(X(Y)) | ||||
| #define _UML_AC(X, Y)	__UML_AC(X, Y) | ||||
| #endif | ||||
| 
 | ||||
| #define STUB_START _AC(, 0x100000) | ||||
| #define STUB_CODE _AC((unsigned long), STUB_START) | ||||
| #define STUB_DATA _AC((unsigned long), STUB_CODE + UM_KERN_PAGE_SIZE) | ||||
| #define STUB_END _AC((unsigned long), STUB_DATA + UM_KERN_PAGE_SIZE) | ||||
| #define STUB_START _UML_AC(, 0x100000) | ||||
| #define STUB_CODE _UML_AC((unsigned long), STUB_START) | ||||
| #define STUB_DATA _UML_AC((unsigned long), STUB_CODE + UM_KERN_PAGE_SIZE) | ||||
| #define STUB_END _UML_AC((unsigned long), STUB_DATA + UM_KERN_PAGE_SIZE) | ||||
| 
 | ||||
| #ifndef __ASSEMBLY__ | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| #include <asm-generic/vmlinux.lds.h> | ||||
| #include <asm/page.h> | ||||
| 
 | ||||
| OUTPUT_FORMAT(ELF_FORMAT) | ||||
| OUTPUT_ARCH(ELF_ARCH) | ||||
| @ -21,7 +22,7 @@ SECTIONS | ||||
| 	_einittext = .;
 | ||||
|   } | ||||
| 
 | ||||
|   . = ALIGN(4096);
 | ||||
|   . = ALIGN(PAGE_SIZE);
 | ||||
| 
 | ||||
|   /* Read-only sections, merged into text segment: */ | ||||
|   .hash           : { *(.hash) } | ||||
| @ -68,9 +69,9 @@ SECTIONS | ||||
|     /* .gnu.warning sections are handled specially by elf32.em.  */ | ||||
|     *(.gnu.warning) | ||||
| 
 | ||||
|     . = ALIGN(4096);
 | ||||
|     . = ALIGN(PAGE_SIZE);
 | ||||
|   } =0x90909090 | ||||
|   . = ALIGN(4096);
 | ||||
|   . = ALIGN(PAGE_SIZE);
 | ||||
|   .syscall_stub : { | ||||
| 	__syscall_stub_start = .;
 | ||||
| 	*(.__syscall_stub*) | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| #include <asm-generic/vmlinux.lds.h> | ||||
| #include <asm/page.h> | ||||
| 
 | ||||
| OUTPUT_FORMAT(ELF_FORMAT) | ||||
| OUTPUT_ARCH(ELF_ARCH) | ||||
| @ -26,7 +27,7 @@ SECTIONS | ||||
| 	INIT_TEXT | ||||
| 	_einittext = .;
 | ||||
|   } | ||||
|   . = ALIGN(4096);
 | ||||
|   . = ALIGN(PAGE_SIZE);
 | ||||
| 
 | ||||
|   .text      : | ||||
|   { | ||||
| @ -39,7 +40,7 @@ SECTIONS | ||||
|     *(.gnu.linkonce.t*) | ||||
|   } | ||||
| 
 | ||||
|   . = ALIGN(4096);
 | ||||
|   . = ALIGN(PAGE_SIZE);
 | ||||
|   .syscall_stub : { | ||||
| 	__syscall_stub_start = .;
 | ||||
| 	*(.__syscall_stub*) | ||||
| @ -79,7 +80,7 @@ SECTIONS | ||||
|   .sdata     : { *(.sdata) } | ||||
|   _edata  =  .;
 | ||||
|   PROVIDE (edata = .);
 | ||||
|   . = ALIGN(0x1000);
 | ||||
|   . = ALIGN(PAGE_SIZE);
 | ||||
|   .sbss      : | ||||
|   { | ||||
|    __bss_start = .;
 | ||||
|  | ||||
| @ -7,16 +7,20 @@ | ||||
| #ifndef __UM_PAGE_H | ||||
| #define __UM_PAGE_H | ||||
| 
 | ||||
| #include <linux/const.h> | ||||
| 
 | ||||
| /* PAGE_SHIFT determines the page size */ | ||||
| #define PAGE_SHIFT	12 | ||||
| #define PAGE_SIZE	(_AC(1, UL) << PAGE_SHIFT) | ||||
| #define PAGE_MASK	(~(PAGE_SIZE-1)) | ||||
| 
 | ||||
| #ifndef __ASSEMBLY__ | ||||
| 
 | ||||
| struct page; | ||||
| 
 | ||||
| #include <linux/types.h> | ||||
| #include <asm/vm-flags.h> | ||||
| 
 | ||||
| /* PAGE_SHIFT determines the page size */ | ||||
| #define PAGE_SHIFT	12 | ||||
| #define PAGE_SIZE	(1UL << PAGE_SHIFT) | ||||
| #define PAGE_MASK	(~(PAGE_SIZE-1)) | ||||
| 
 | ||||
| /*
 | ||||
|  * These are used to make use of C type-checking.. | ||||
|  */ | ||||
| @ -120,4 +124,5 @@ extern struct page *arch_validate(struct page *page, gfp_t mask, int order); | ||||
| #include <asm-generic/memory_model.h> | ||||
| #include <asm-generic/page.h> | ||||
| 
 | ||||
| #endif | ||||
| #endif	/* __ASSEMBLY__ */ | ||||
| #endif	/* __UM_PAGE_H */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user