瀏覽代碼

[MIPS] Fix linker script to work for non-4K page size.

Very much to my surprise Fuxin Zhang reports this is all it takes to get
the kernel to work for page sizes larger than 4kB. This also paves the
way for support for the R6000 and R8000 which don't support 4kB page size.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

Ralf Baechle 19 年之前
父節點
當前提交
dbee90b7f9
共有 1 個文件被更改,包括 6 次插入5 次删除
  1. 6 5
      arch/mips/kernel/vmlinux.lds.S

+ 6 - 5
arch/mips/kernel/vmlinux.lds.S

@@ -1,4 +1,5 @@
 #include <linux/config.h>
 #include <linux/config.h>
+#include <asm/asm-offsets.h>
 #include <asm-generic/vmlinux.lds.h>
 #include <asm-generic/vmlinux.lds.h>
 
 
 #undef mips		/* CPP really sucks for this job  */
 #undef mips		/* CPP really sucks for this job  */
@@ -64,10 +65,10 @@ SECTIONS
      we can shorten the on-disk segment size.  */
      we can shorten the on-disk segment size.  */
   .sdata     : { *(.sdata) }
   .sdata     : { *(.sdata) }
 
 
-  . = ALIGN(4096);
+  . = ALIGN(_PAGE_SIZE);
   __nosave_begin = .;
   __nosave_begin = .;
   .data_nosave : { *(.data.nosave) }
   .data_nosave : { *(.data.nosave) }
-  . = ALIGN(4096);
+  . = ALIGN(_PAGE_SIZE);
   __nosave_end = .;
   __nosave_end = .;
 
 
   . = ALIGN(32);
   . = ALIGN(32);
@@ -76,7 +77,7 @@ SECTIONS
   _edata =  .;			/* End of data section */
   _edata =  .;			/* End of data section */
 
 
   /* will be freed after init */
   /* will be freed after init */
-  . = ALIGN(4096);		/* Init code and data */
+  . = ALIGN(_PAGE_SIZE);		/* Init code and data */
   __init_begin = .;
   __init_begin = .;
   .init.text : {
   .init.text : {
 	_sinittext = .;
 	_sinittext = .;
@@ -105,7 +106,7 @@ SECTIONS
   .con_initcall.init : { *(.con_initcall.init) }
   .con_initcall.init : { *(.con_initcall.init) }
   __con_initcall_end = .;
   __con_initcall_end = .;
   SECURITY_INIT
   SECURITY_INIT
-  . = ALIGN(4096);
+  . = ALIGN(_PAGE_SIZE);
   __initramfs_start = .;
   __initramfs_start = .;
   .init.ramfs : { *(.init.ramfs) }
   .init.ramfs : { *(.init.ramfs) }
   __initramfs_end = .;
   __initramfs_end = .;
@@ -113,7 +114,7 @@ SECTIONS
   __per_cpu_start = .;
   __per_cpu_start = .;
   .data.percpu  : { *(.data.percpu) }
   .data.percpu  : { *(.data.percpu) }
   __per_cpu_end = .;
   __per_cpu_end = .;
-  . = ALIGN(4096);
+  . = ALIGN(_PAGE_SIZE);
   __init_end = .;
   __init_end = .;
   /* freed after init ends here */
   /* freed after init ends here */