PERFORCE change 28370 for review
Peter Wemm
peter at FreeBSD.org
Sun Apr 6 16:41:16 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=28370
Change 28370 by peter at peter_overcee on 2003/04/06 16:41:10
set the direct mappings correctly. 1GB at physical address zero,
and 1GB at KERNBASE (hardcoded for now). Remove debug printfs.
Affected files ...
.. //depot/projects/hammer/sys/boot/i386/libi386/elf64_freebsd.c#6 edit
Differences ...
==== //depot/projects/hammer/sys/boot/i386/libi386/elf64_freebsd.c#6 (text+ko) ====
@@ -89,7 +89,6 @@
bi->bi_symtab = ssym; /* XXX this is only the primary kernel symtab */
bi->bi_esymtab = esym;
-printf("initializing trampoline, __base=%#x\n", __base);
#define PG_V 0x001
#define PG_RW 0x002
#define PG_U 0x004
@@ -102,23 +101,25 @@
PT4[0] = (p4_entry_t)VTOP((uintptr_t)&PT3[0]);
PT4[0] |= PG_V | PG_RW | PG_U;
- /* four PDP entries, 1G each */
- for (i = 0; i < 4; i++) {
- PT3[i] = (p3_entry_t)VTOP((uintptr_t)&PT2[i * 512]);
- PT3[i] |= PG_V | PG_RW | PG_U;
- }
+ /* Direct map 1GB at address zero */
+ PT3[0] = (p3_entry_t)VTOP((uintptr_t)&PT2[0]);
+ PT3[0] |= PG_V | PG_RW | PG_U;
+
+ /* Direct map 1GB at KERNBASE (hardcoded for now) */
+ PT3[1] = (p3_entry_t)VTOP((uintptr_t)&PT2[0]);
+ PT3[1] |= PG_V | PG_RW | PG_U;
- /* 2048 PG_PS (2MB) page mappings */
- for (i = 0; i < 2048; i++) {
+ /* 512 PG_PS (2MB) page mappings for 1GB of direct mapping */
+ for (i = 0; i < 512; i++) {
PT2[i] = i * (2 * 1024 * 1024);
PT2[i] |= PG_V | PG_RW | PG_PS | PG_U;
}
entry_lo = ehdr->e_entry & 0xffffffff;
entry_hi = (ehdr->e_entry >> 32) & 0xffffffff;
- printf("entry_hi: %#x \n", entry_hi);
- printf("entry_lo: %#x \n", entry_lo);
+#ifdef DEBUG
printf("Start @ %#llx ...\n", ehdr->e_entry);
+#endif
dev_cleanup();
__exec((void *)VTOP(x86_64_tramp), boothowto, bootdev, 0, 0, 0, bootinfop, modulep, bi->bi_kernend);
More information about the p4-projects
mailing list