Module Name:    src
Committed By:   maxv
Date:           Mon May 16 07:52:31 UTC 2016

Modified Files:
        src/sys/arch/i386/conf: kern.ldscript.4MB

Log Message:
Update kern.ldscript.4MB. It is the same as kern.ldscript, but with a large
page alignment before rodata.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/i386/conf/kern.ldscript.4MB

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/i386/conf/kern.ldscript.4MB
diff -u src/sys/arch/i386/conf/kern.ldscript.4MB:1.16 src/sys/arch/i386/conf/kern.ldscript.4MB:1.17
--- src/sys/arch/i386/conf/kern.ldscript.4MB:1.16	Tue Aug 25 12:56:58 2015
+++ src/sys/arch/i386/conf/kern.ldscript.4MB	Mon May 16 07:52:31 2016
@@ -1,69 +1,88 @@
-/*	$NetBSD: kern.ldscript.4MB,v 1.16 2015/08/25 12:56:58 uebayasi Exp $	*/
+/*	$NetBSD: kern.ldscript.4MB,v 1.17 2016/05/16 07:52:31 maxv Exp $	*/
 
 #include "assym.h"
 
+/*
+ * The large page size is 4MB in the non-PAE case.
+ */
+
+__PAGE_SIZE = 0x1000 ;
+__LARGE_PAGE_SIZE = 0x400000 ;
+
 ENTRY(_start)
 SECTIONS
 {
-  /* Read-only sections, merged into text segment: */
-  .text :
-  {
-    *(.text)
-    *(.text.*)
-    *(.stub)
-  }
-  _etext = . ;
-  PROVIDE (etext = .) ;
-
-  .rodata :
-  {
-    *(.rodata)
-    *(.rodata.*)
-  }
-
-  /* Adjust the address for the data segment.  We push the data segment
-     up to the next 4MB boundary so that we can map the text with large
-     pages. */
-  . = ALIGN(0x400000);
-  __data_start = . ;
-  .data :
-  {
-    *(.data)
-  }
-  . = ALIGN(COHERENCY_UNIT);
-  .data.cacheline_aligned :
-  {
-    *(.data.cacheline_aligned)
-  }
-  . = ALIGN(COHERENCY_UNIT);
-  .data.read_mostly :
-  {
-    *(.data.read_mostly)
-  }
-  . = ALIGN(COHERENCY_UNIT);
-  _edata = . ;
-  PROVIDE (edata = .) ;
-  __bss_start = . ;
-  .bss :
-  {
-    *(.bss)
-    *(.bss.*)
-    *(COMMON)
-    . = ALIGN(32 / 8);
-  }
-  . = ALIGN(32 / 8);
-  _end = . ;
-  PROVIDE (end = .) ;
-  .note.netbsd.ident :
-  {
-    KEEP(*(.note.netbsd.ident));
-  }
+	.text :
+	{
+		*(.text)
+		*(.text.*)
+		*(.stub)
+	}
+	_etext = . ;
+	PROVIDE (etext = .) ;
+
+	/*
+	 * Push the rodata segment up to the next large page boundary so that we
+	 * can map the text segment with large pages.
+	 */
+	. = ALIGN(__LARGE_PAGE_SIZE);
+
+	__rodata_start = . ;
+	.rodata :
+	{
+		*(.rodata)
+		*(.rodata.*)
+	}
+
+	. = ALIGN(__PAGE_SIZE);
+
+	__data_start = . ;
+	.data :
+	{
+		*(.data)
+	}
+
+	. = ALIGN(COHERENCY_UNIT);
+	.data.cacheline_aligned :
+	{
+		*(.data.cacheline_aligned)
+	}
+	. = ALIGN(COHERENCY_UNIT);
+	.data.read_mostly :
+	{
+		*(.data.read_mostly)
+	}
+	. = ALIGN(COHERENCY_UNIT);
+
+	_edata = . ;
+	PROVIDE (edata = .) ;
+	__bss_start = . ;
+	.bss :
+	{
+		*(.bss)
+		*(.bss.*)
+		*(COMMON)
+		. = ALIGN(32 / 8);
+	}
+
+	. = ALIGN(__PAGE_SIZE);
+
+	/* End of the kernel image */
+	__kernel_end = . ;
+
+	_end = . ;
+	PROVIDE (end = .) ;
+	.note.netbsd.ident :
+	{
+		KEEP(*(.note.netbsd.ident));
+	}
 }
+
 SECTIONS
 {
-  .text :
-  AT (ADDR(.text) & 0x0fffffff)
-  {
-    *(.text)
-  } =0
+	.text :
+	AT (ADDR(.text) & 0x0fffffff)
+	{
+		*(.text)
+	} = 0
 }

Reply via email to