+ serialmode = 0; /* Assume normal keyboard and console */
+ if(PE_parse_boot_arg("serial", &serialmode)) { /* Do we want a serial keyboard and/or console? */
+ kprintf("Serial mode specified: %08X\n", serialmode);
+ }
+ if(serialmode & 1) { /* Start serial if requested */
+ (void)switch_to_serial_console(); /* Switch into serial mode */
+ disableConsoleOutput = FALSE; /* Allow printfs to happen */
+ }
+
+ kprintf("max_mem: %ld M\n", (unsigned long)(max_mem >> 20));
+ kprintf("version_variant = %s\n", version_variant);
+ kprintf("version = %s\n\n", version);
+ __asm__ ("mfpvr %0" : "=r" (pvr));
+ kprintf("proc version = %08x\n", pvr);
+ if(getPerProc()->pf.Available & pf64Bit) { /* 64-bit processor? */
+ xhid0 = hid0get64(); /* Get the hid0 */
+ if(xhid0 & (1ULL << (63 - 19))) kprintf("Time base is externally clocked\n");
+ else kprintf("Time base is internally clocked\n");
+ }
+
+
+ taproot_size = PE_init_taproot(&taproot_addr); /* (BRINGUP) See if there is a taproot */
+ if(taproot_size) { /* (BRINGUP) */
+ kprintf("TapRoot card configured to use vaddr = %08X, size = %08X\n", taproot_addr, taproot_size);
+ bcopy_nc((void *)version, (void *)(taproot_addr + 16), strlen(version)); /* (BRINGUP) Pass it our kernel version */
+ __asm__ volatile("eieio"); /* (BRINGUP) */
+ xtaproot = (unsigned int *)taproot_addr; /* (BRINGUP) */
+ xtaproot[0] = 1; /* (BRINGUP) */
+ __asm__ volatile("eieio"); /* (BRINGUP) */
+ }
+
+ PE_create_console(); /* create the console for verbose or pretty mode */
+
+ /* setup console output */
+ PE_init_printf(FALSE);
+
+#if DEBUG
+ printf("\n\n\nThis program was compiled using gcc %d.%d for powerpc\n",
+ __GNUC__,__GNUC_MINOR__);
+
+
+ /* Processor version information */
+ {
+ unsigned int pvr;
+ __asm__ ("mfpvr %0" : "=r" (pvr));
+ printf("processor version register : %08X\n", pvr);
+ }
+
+ kprintf("Args at %08X\n", args);
+ for (i = 0; i < pmap_mem_regions_count; i++) {
+ printf("DRAM at %08X size %08X\n",
+ args->PhysicalDRAM[i].base,
+ args->PhysicalDRAM[i].size);
+ }
+#endif /* DEBUG */
+
+#if DEBUG
+ kprintf("Mapped memory:\n");
+ kprintf(" exception vector: %08X, %08X - %08X\n", trunc_page(exception_entry),
+ trunc_page(exception_entry), round_page(exception_end));
+ kprintf(" sectTEXTB: %08X, %08X - %08X\n", trunc_page(sectTEXTB),
+ trunc_page(sectTEXTB), round_page(sectTEXTB+sectSizeTEXT));
+ kprintf(" sectDATAB: %08X, %08X - %08X\n", trunc_page(sectDATAB),
+ trunc_page(sectDATAB), round_page(sectDATAB+sectSizeDATA));
+ 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),
+ trunc_page(sectKLDB), round_page(sectKLDB+sectSizeKLD));
+ kprintf(" end: %08X, %08X - %08X\n", trunc_page(end),
+ trunc_page(end), static_memory_end);
+
+#endif
+
+ return;