Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F135629554
D7934.id20462.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D7934.id20462.diff
View Options
Index: head/sys/boot/efi/loader/arch/amd64/elf64_freebsd.c
===================================================================
--- head/sys/boot/efi/loader/arch/amd64/elf64_freebsd.c
+++ head/sys/boot/efi/loader/arch/amd64/elf64_freebsd.c
@@ -35,6 +35,8 @@
#include <string.h>
#include <machine/elf.h>
#include <stand.h>
+#include <vm/vm.h>
+#include <vm/pmap.h>
#include <efi.h>
#include <efilib.h>
@@ -57,8 +59,14 @@
static int elf64_exec(struct preloaded_file *amp);
static int elf64_obj_exec(struct preloaded_file *amp);
-static struct file_format amd64_elf = { elf64_loadfile, elf64_exec };
-static struct file_format amd64_elf_obj = { elf64_obj_loadfile, elf64_obj_exec };
+static struct file_format amd64_elf = {
+ .l_load = elf64_loadfile,
+ .l_exec = elf64_exec,
+};
+static struct file_format amd64_elf_obj = {
+ .l_load = elf64_obj_loadfile,
+ .l_exec = elf64_obj_exec,
+};
struct file_format *file_formats[] = {
&amd64_elf,
@@ -66,21 +74,12 @@
NULL
};
-#define PG_V 0x001
-#define PG_RW 0x002
-#define PG_U 0x004
-#define PG_PS 0x080
-
-typedef u_int64_t p4_entry_t;
-typedef u_int64_t p3_entry_t;
-typedef u_int64_t p2_entry_t;
-static p4_entry_t *PT4;
-static p3_entry_t *PT3;
-static p2_entry_t *PT2;
+static pml4_entry_t *PT4;
+static pdp_entry_t *PT3;
+static pd_entry_t *PT2;
static void (*trampoline)(uint64_t stack, void *copy_finish, uint64_t kernend,
- uint64_t modulep, p4_entry_t *pagetable,
- uint64_t entry);
+ uint64_t modulep, pml4_entry_t *pagetable, uint64_t entry);
extern uintptr_t amd64_tramp;
extern uint32_t amd64_tramp_size;
@@ -157,7 +156,7 @@
bcopy((void *)&amd64_tramp, (void *)trampcode, amd64_tramp_size);
trampoline = (void *)trampcode;
- PT4 = (p4_entry_t *)0x0000000040000000;
+ PT4 = (pml4_entry_t *)0x0000000040000000;
err = BS->AllocatePages(AllocateMaxAddress, EfiLoaderData, 3,
(EFI_PHYSICAL_ADDRESS *)&PT4);
bzero(PT4, 3 * EFI_PAGE_SIZE);
@@ -172,11 +171,11 @@
*/
for (i = 0; i < 512; i++) {
/* Each slot of the L4 pages points to the same L3 page. */
- PT4[i] = (p4_entry_t)PT3;
+ PT4[i] = (pml4_entry_t)PT3;
PT4[i] |= PG_V | PG_RW | PG_U;
/* Each slot of the L3 pages points to the same L2 page. */
- PT3[i] = (p3_entry_t)PT2;
+ PT3[i] = (pdp_entry_t)PT2;
PT3[i] |= PG_V | PG_RW | PG_U;
/* The L2 page slots are mapped with 2MB pages for 1GB. */
@@ -204,5 +203,6 @@
static int
elf64_obj_exec(struct preloaded_file *fp)
{
+
return (EFTYPE);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Nov 12, 10:49 AM (11 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25206828
Default Alt Text
D7934.id20462.diff (2 KB)
Attached To
Mode
D7934: Use pmap names for the EFI trampoline page table code.
Attached
Detach File
Event Timeline
Log In to Comment