+ 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(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);