int sectSizeTEXT;
vm_offset_t sectDATAB;
int sectSizeDATA;
-vm_offset_t sectOBJCB;
-int sectSizeOBJC;
vm_offset_t sectLINKB;
int sectSizeLINK;
vm_offset_t sectKLDB;
vm_offset_t first_phys_avail;
vm_offset_t sizeadj, oldstart;
-#ifdef __MACHO__
/* Now retrieve addresses for end, edata, and etext
* from MACH-O headers.
*/
&_mh_execute_header, "__TEXT", §SizeTEXT);
sectDATAB = (vm_offset_t)getsegdatafromheader(
&_mh_execute_header, "__DATA", §SizeDATA);
- sectOBJCB = (vm_offset_t)getsegdatafromheader(
- &_mh_execute_header, "__OBJC", §SizeOBJC);
sectLINKB = (vm_offset_t)getsegdatafromheader(
&_mh_execute_header, "__LINKEDIT", §SizeLINK);
sectKLDB = (vm_offset_t)getsegdatafromheader(
#if DEBUG
kprintf("sectTEXT: %x, size: %x\n", sectTEXTB, sectSizeTEXT);
kprintf("sectDATA: %x, size: %x\n", sectDATAB, sectSizeDATA);
- kprintf("sectOBJC: %x, size: %x\n", sectOBJCB, sectSizeOBJC);
kprintf("sectLINK: %x, size: %x\n", sectLINKB, sectSizeLINK);
kprintf("sectKLD: %x, size: %x\n", sectKLDB, sectSizeKLD);
kprintf("end: %x\n", end);
#endif
-#endif /* __MACHO__ */
/* Stitch valid memory regions together - they may be contiguous
* even though they're not already glued together
*/
- mem_actual = mem_actual = args->PhysicalDRAM[0].base + args->PhysicalDRAM[0].size; /* Initialize to the first region size */
+ mem_actual = args->PhysicalDRAM[0].base + args->PhysicalDRAM[0].size; /* Initialize to the first region size */
addr = 0; /* temp use as pointer to previous memory region... */
for (i = 1; i < kMaxDRAMBanks; i++) {
kmapsize = (round_page(exception_end) - trunc_page(exception_entry)) + /* Get size we will map later */
(round_page(sectTEXTB+sectSizeTEXT) - trunc_page(sectTEXTB)) +
(round_page(sectDATAB+sectSizeDATA) - trunc_page(sectDATAB)) +
- (round_page(sectOBJCB+sectSizeOBJC) - trunc_page(sectOBJCB)) +
(round_page(sectLINKB+sectSizeLINK) - trunc_page(sectLINKB)) +
(round_page(sectKLDB+sectSizeKLD) - trunc_page(sectKLDB)) +
(round_page(static_memory_end) - trunc_page(end));
trunc_page(sectTEXTB), round_page(sectTEXTB+sectSizeTEXT));
kprintf(" sectDATAB: %08X, %08X - %08X\n", trunc_page(sectDATAB),
trunc_page(sectDATAB), round_page(sectDATAB+sectSizeDATA));
- kprintf(" sectOBJCB: %08X, %08X - %08X\n", trunc_page(sectOBJCB),
- trunc_page(sectOBJCB), round_page(sectOBJCB+sectSizeOBJC));
kprintf(" sectLINKB: %08X, %08X - %08X\n", trunc_page(sectLINKB),
trunc_page(sectLINKB), round_page(sectLINKB+sectSizeLINK));
kprintf(" sectKLDB: %08X, %08X - %08X\n", trunc_page(sectKLDB),
round_page(sectTEXTB+sectSizeTEXT), VM_PROT_READ|VM_PROT_EXECUTE);
pmap_map(trunc_page(sectDATAB), trunc_page(sectDATAB),
round_page(sectDATAB+sectSizeDATA), VM_PROT_READ|VM_PROT_WRITE);
- pmap_map(trunc_page(sectOBJCB), trunc_page(sectOBJCB),
- round_page(sectOBJCB+sectSizeOBJC), VM_PROT_READ|VM_PROT_WRITE);
/* The KLD and LINKEDIT segments are unloaded in toto after boot completes,
addr < round_page(sectKLDB+sectSizeKLD);
addr += PAGE_SIZE) {
- pmap_enter(kernel_pmap, addr, addr, VM_PROT_READ|VM_PROT_WRITE, TRUE);
+ pmap_enter(kernel_pmap, addr, addr,
+ VM_PROT_READ|VM_PROT_WRITE,
+ VM_WIMG_USE_DEFAULT, TRUE);
}
for (addr = trunc_page(sectLINKB);
addr < round_page(sectLINKB+sectSizeLINK);
addr += PAGE_SIZE) {
- pmap_enter(kernel_pmap, addr, addr, VM_PROT_READ|VM_PROT_WRITE, TRUE);
+ pmap_enter(kernel_pmap, addr, addr,
+ VM_PROT_READ|VM_PROT_WRITE,
+ VM_WIMG_USE_DEFAULT, TRUE);
}
/*
* be released later, but not all. Ergo, no block mapping here
*/
for(addr = trunc_page(end); addr < round_page(static_memory_end); addr += PAGE_SIZE) {
- pmap_enter(kernel_pmap, addr, addr, VM_PROT_READ|VM_PROT_WRITE, TRUE);
+ pmap_enter(kernel_pmap, addr, addr,
+ VM_PROT_READ|VM_PROT_WRITE,
+ VM_WIMG_USE_DEFAULT, TRUE);
}
#endif /* __MACHO__ */
}
#endif
- /* Initialize shadow IBATs */
- shadow_BAT.IBATs[0].upper=BAT_INVALID;
- shadow_BAT.IBATs[0].lower=BAT_INVALID;
- shadow_BAT.IBATs[1].upper=BAT_INVALID;
- shadow_BAT.IBATs[1].lower=BAT_INVALID;
- shadow_BAT.IBATs[2].upper=BAT_INVALID;
- shadow_BAT.IBATs[2].lower=BAT_INVALID;
- shadow_BAT.IBATs[3].upper=BAT_INVALID;
- shadow_BAT.IBATs[3].lower=BAT_INVALID;
-
- LoadIBATs((unsigned int *)&shadow_BAT.IBATs[0]); /* Load up real IBATs from shadows */
+/*
+ * Note: the shadow BAT registers were already loaded in ppc_init.c
+ */
- /* Initialize shadow DBATs */
- shadow_BAT.DBATs[0].upper=BAT_INVALID;
- shadow_BAT.DBATs[0].lower=BAT_INVALID;
- shadow_BAT.DBATs[1].upper=BAT_INVALID;
- shadow_BAT.DBATs[1].lower=BAT_INVALID;
- mfdbatu(shadow_BAT.DBATs[2].upper,2);
- mfdbatl(shadow_BAT.DBATs[2].lower,2);
- mfdbatu(shadow_BAT.DBATs[3].upper,3);
- mfdbatl(shadow_BAT.DBATs[3].lower,3);
+ LoadIBATs((unsigned int *)&shadow_BAT.IBATs[0]); /* Load up real IBATs from shadows */
LoadDBATs((unsigned int *)&shadow_BAT.DBATs[0]); /* Load up real DBATs from shadows */
- sync();isync();
#if DEBUG
for(i=0; i<4; i++) kprintf("DBAT%1d: %08X %08X\n",
i, shadow_BAT.DBATs[i].upper, shadow_BAT.DBATs[i].lower);