66,137d65
< Addr addr = 0;
<
< /**
< * The symbol swapper_pg_dir marks the beginning of the kernel and
< * the location of bootloader passed arguments
< */
< if (!kernelSymtab->findAddress("swapper_pg_dir", KernelStart)) {
< panic("Could not determine start location of kernel");
< }
<
< /**
< * Since we aren't using a bootloader, we have to copy the
< * kernel arguments directly into the kernel's memory.
< */
< virtPort->writeBlob(CommandLine(), (uint8_t*)params()->boot_osflags.c_str(),
< params()->boot_osflags.length()+1);
<
< /**
< * find the address of the est_cycle_freq variable and insert it
< * so we don't through the lengthly process of trying to
< * calculated it by using the PIT, RTC, etc.
< */
< if (kernelSymtab->findAddress("est_cycle_freq", addr))
< virtPort->write(addr, (uint64_t)(SimClock::Frequency /
< p->boot_cpu_frequency));
<
< /**
< * EV5 only supports 127 ASNs so we are going to tell the kernel that the
< * paritiuclar EV6 we have only supports 127 asns.
< * @todo At some point we should change ev5.hh and the palcode to support
< * 255 ASNs.
< */
< if (kernelSymtab->findAddress("dp264_mv", addr))
< virtPort->write(addr + 0x18, LittleEndianGuest::htog((uint32_t)127));
< else
< panic("could not find dp264_mv\n");
<
< #ifndef NDEBUG
< kernelPanicEvent = addKernelFuncEvent<BreakPCEvent>("panic");
< if (!kernelPanicEvent)
< panic("could not find kernel symbol \'panic\'");
<
< #endif
<
< /**
< * Any time ide_delay_50ms, calibarte_delay or
< * determine_cpu_caches is called just skip the
< * function. Currently determine_cpu_caches only is used put
< * information in proc, however if that changes in the future we
< * will have to fill in the cache size variables appropriately.
< */
<
< skipIdeDelay50msEvent =
< addKernelFuncEvent<SkipFuncEvent>("ide_delay_50ms");
< skipDelayLoopEvent =
< addKernelFuncEvent<SkipDelayLoopEvent>("calibrate_delay");
< skipCacheProbeEvent =
< addKernelFuncEvent<SkipFuncEvent>("determine_cpu_caches");
< debugPrintkEvent = addKernelFuncEvent<DebugPrintkEvent>("dprintk");
< idleStartEvent = addKernelFuncEvent<IdleStartEvent>("cpu_idle");
<
< // Disable for now as it runs into panic() calls in VPTr methods
< // (see sim/vptr.hh). Once those bugs are fixed, we can
< // re-enable, but we should find a better way to turn it on than
< // using DTRACE(Thread), since looking at a trace flag at tick 0
< // leads to non-intuitive behavior with --trace-start.
< if (false && kernelSymtab->findAddress("mips_switch_to", addr)) {
< printThreadEvent = new PrintThreadInfo(&pcEventQueue, "threadinfo",
< addr + sizeof(MachInst) * 6);
< } else {
< printThreadEvent = NULL;
< }
142,150d69
< #ifndef NDEBUG
< delete kernelPanicEvent;
< #endif
< delete skipIdeDelay50msEvent;
< delete skipDelayLoopEvent;
< delete skipCacheProbeEvent;
< delete debugPrintkEvent;
< delete idleStartEvent;
< delete printThreadEvent;