diff --git a/SConscript b/SConscript index d1f4bc0b7..60e703e9b 100644 --- a/SConscript +++ b/SConscript @@ -259,6 +259,7 @@ full_system_sources = Split(''' kern/linux/linux_events.cc kern/linux/linux_syscalls.cc kern/linux/linux_system.cc + kern/linux/printk.cc kern/tru64/dump_mbuf.cc kern/tru64/printf.cc kern/tru64/tru64_events.cc diff --git a/kern/linux/linux_system.cc b/kern/linux/linux_system.cc index ab1355637..bc2753908 100644 --- a/kern/linux/linux_system.cc +++ b/kern/linux/linux_system.cc @@ -28,10 +28,11 @@ /** * @file - * loads the linux kernel, console, pal and patches certain functions. - * The symbol tables are loaded so that traces can show the executing - * function and we can skip functions. Various delay loops are skipped - * and their final values manually computed to speed up boot time. + * This code loads the linux kernel, console, pal and patches certain + * functions. The symbol tables are loaded so that traces can show + * the executing function and we can skip functions. Various delay + * loops are skipped and their final values manually computed to speed + * up boot time. */ #include "base/loader/aout_object.hh" @@ -129,6 +130,8 @@ LinuxSystem::LinuxSystem(const string _name, const uint64_t _init_param, skipCacheProbeEvent = new SkipFuncEvent(&pcEventQueue, "determine_cpu_caches"); + debugPrintkEvent = new DebugPrintkEvent(&pcEventQueue, "dprintk"); + Addr addr = 0; /** @@ -236,6 +239,9 @@ LinuxSystem::LinuxSystem(const string _name, const uint64_t _init_param, if (kernelSymtab->findAddress("determine_cpu_caches", addr)) skipCacheProbeEvent->schedule(addr+sizeof(MachInst)); + + if (kernelSymtab->findAddress("dprintk", addr)) + debugPrintkEvent->schedule(addr+sizeof(MachInst)*2); } LinuxSystem::~LinuxSystem() diff --git a/kern/linux/printk.cc b/kern/linux/printk.cc index 5aaa7abe2..fc7c171bc 100644 --- a/kern/linux/printk.cc +++ b/kern/linux/printk.cc @@ -34,6 +34,7 @@ #include "sim/host.hh" #include "targetarch/arguments.hh" #include "targetarch/vtophys.hh" +#include "kern/linux/printk.hh" using namespace std;