Page MenuHomeFreeBSD

D27355.diff
No OneTemporary

D27355.diff

Index: head/stand/efi/loader/copy.c
===================================================================
--- head/stand/efi/loader/copy.c
+++ head/stand/efi/loader/copy.c
@@ -42,6 +42,7 @@
#if defined(__i386__) || defined(__amd64__)
#include <machine/cpufunc.h>
#include <machine/specialreg.h>
+#include <machine/vmparam.h>
/*
* The code is excerpted from sys/x86/x86/identcpu.c: identify_cpu(),
@@ -89,8 +90,6 @@
return (1);
}
-#define KERNEL_PHYSICAL_BASE (2*1024*1024)
-
static void
efi_verify_staging_size(unsigned long *nr_pages)
{
@@ -134,12 +133,11 @@
start = p->PhysicalStart;
end = start + p->NumberOfPages * EFI_PAGE_SIZE;
- if (KERNEL_PHYSICAL_BASE < start ||
- KERNEL_PHYSICAL_BASE >= end)
+ if (KERNLOAD < start || KERNLOAD >= end)
continue;
available_pages = p->NumberOfPages -
- ((KERNEL_PHYSICAL_BASE - start) >> EFI_PAGE_SHIFT);
+ ((KERNLOAD - start) >> EFI_PAGE_SHIFT);
break;
}
Index: head/sys/amd64/amd64/genassym.c
===================================================================
--- head/sys/amd64/amd64/genassym.c
+++ head/sys/amd64/amd64/genassym.c
@@ -115,6 +115,7 @@
ASSYM(val_PML4PML4I, PML4PML4I);
ASSYM(VM_MAXUSER_ADDRESS, VM_MAXUSER_ADDRESS);
ASSYM(KERNBASE, KERNBASE);
+ASSYM(KERNLOAD, KERNLOAD);
ASSYM(DMAP_MIN_ADDRESS, DMAP_MIN_ADDRESS);
ASSYM(DMAP_MAX_ADDRESS, DMAP_MAX_ADDRESS);
Index: head/sys/amd64/amd64/locore.S
===================================================================
--- head/sys/amd64/amd64/locore.S
+++ head/sys/amd64/amd64/locore.S
@@ -36,8 +36,9 @@
/*
* Compiled KERNBASE location
*/
- .globl kernbase, loc_PTmap, loc_PDmap, loc_PDPmap, dmapbase, dmapend
+ .globl kernbase, kernload, loc_PTmap, loc_PDmap, loc_PDPmap, dmapbase, dmapend
.set kernbase,KERNBASE
+ .set kernload,KERNLOAD
.set dmapbase,DMAP_MIN_ADDRESS
.set dmapend,DMAP_MAX_ADDRESS
Index: head/sys/amd64/include/vmparam.h
===================================================================
--- head/sys/amd64/include/vmparam.h
+++ head/sys/amd64/include/vmparam.h
@@ -149,6 +149,14 @@
#endif
/*
+ * Kernel physical load address. Needs to be aligned at 2MB superpage
+ * boundary.
+ */
+#ifndef KERNLOAD
+#define KERNLOAD 0x200000
+#endif
+
+/*
* Virtual addresses of things. Derived from the page directory and
* page table indexes from pmap.h for precision.
*
Index: head/sys/conf/ldscript.amd64
===================================================================
--- head/sys/conf/ldscript.amd64
+++ head/sys/conf/ldscript.amd64
@@ -5,8 +5,8 @@
SEARCH_DIR("/usr/lib");
SECTIONS
{
+ kernphys = kernload;
/* Read-only sections, merged into text segment: */
- kernphys = 0x200000; /* 2MB superpage size */
. = kernbase + kernphys + SIZEOF_HEADERS;
/*
* Use the AT keyword in order to set the right LMA that contains

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 30, 5:34 AM (13 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30575569
Default Alt Text
D27355.diff (2 KB)

Event Timeline