diff options
Diffstat (limited to 'src/sim/system.cc')
-rw-r--r-- | src/sim/system.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/sim/system.cc b/src/sim/system.cc index 42cd5e720..9d0b919ca 100644 --- a/src/sim/system.cc +++ b/src/sim/system.cc @@ -174,6 +174,14 @@ System::System(Params *p) // Loading only needs to happen once and after memory system is // connected so it will happen in initState() } + + for (const auto &obj_name : p->kernel_extras) { + inform("Loading additional kernel object: %s", obj_name); + ObjectFile *obj = createObjectFile(obj_name); + fatal_if(!obj, "Failed to additional kernel object '%s'.\n", + obj_name); + kernelExtras.push_back(obj); + } } // increment the number of running systems @@ -312,6 +320,10 @@ System::initState() } // Load program sections into memory kernel->loadSections(physProxy, loadAddrMask, loadAddrOffset); + for (const auto &extra_kernel : kernelExtras) { + extra_kernel->loadSections(physProxy, loadAddrMask, + loadAddrOffset); + } DPRINTF(Loader, "Kernel start = %#x\n", kernelStart); DPRINTF(Loader, "Kernel end = %#x\n", kernelEnd); |