Page MenuHomeFreeBSD

D27355.id80004.diff
No OneTemporary

D27355.id80004.diff

Index: stand/efi/loader/copy.c
===================================================================
--- stand/efi/loader/copy.c
+++ 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: sys/amd64/amd64/genassym.c
===================================================================
--- sys/amd64/amd64/genassym.c
+++ 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: sys/amd64/amd64/locore.S
===================================================================
--- sys/amd64/amd64/locore.S
+++ 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: sys/amd64/include/vmparam.h
===================================================================
--- sys/amd64/include/vmparam.h
+++ sys/amd64/include/vmparam.h
@@ -148,6 +148,13 @@
#define PA_LOCK_COUNT 256
#endif
+/*
+ * Kernel physical load address.
+ */
+#ifndef KERNLOAD
+#define KERNLOAD 0x200000 /* 2MB superpage size */
+#endif
+
/*
* Virtual addresses of things. Derived from the page directory and
* page table indexes from pmap.h for precision.
Index: sys/conf/ldscript.amd64
===================================================================
--- sys/conf/ldscript.amd64
+++ 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
Thu, Jan 1, 2:53 PM (7 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27438779
Default Alt Text
D27355.id80004.diff (2 KB)

Event Timeline