45c45
< : System(p), sysTick(0)
---
> : System(p), sysTick(0),funcRomPort(p->name + "-fport")
51a52,55
> Port *rom_port;
> rom_port = params()->rom->getPort("functional");
> funcRomPort.setPeer(rom_port);
> rom_port->setPeer(&funcRomPort);
57c61
< reset = createObjectFile(params()->reset_bin);
---
> reset = createObjectFile(params()->reset_bin, true);
62c66
< openboot = createObjectFile(params()->openboot_bin);
---
> openboot = createObjectFile(params()->openboot_bin, true);
67c71
< hypervisor = createObjectFile(params()->hypervisor_bin);
---
> hypervisor = createObjectFile(params()->hypervisor_bin, true);
73c77,78
< reset->loadSections(&functionalPort, SparcISA::LoadAddrMask);
---
> reset->setTextBase(params()->reset_addr);
> reset->loadSections(&funcRomPort);
75c80,81
< openboot->loadSections(&functionalPort, SparcISA::LoadAddrMask);
---
> openboot->setTextBase(params()->openboot_addr);
> openboot->loadSections(&funcRomPort);
77c83,84
< hypervisor->loadSections(&functionalPort, SparcISA::LoadAddrMask);
---
> hypervisor->setTextBase(params()->hypervisor_addr);
> hypervisor->loadSections(&funcRomPort);
143a151
> SimObjectParam<PhysicalMemory *> rom;
145a154,157
> Param<Addr> reset_addr;
> Param<Addr> hypervisor_addr;
> Param<Addr> openboot_addr;
>
153,154d164
< Param<uint64_t> system_type;
< Param<uint64_t> system_rev;
162a173
> INIT_PARAM(rom, "ROM for boot code"),
164a176,180
>
> INIT_PARAM(reset_addr, "Address that reset should be loaded at"),
> INIT_PARAM(hypervisor_addr, "Address that hypervisor should be loaded at"),
> INIT_PARAM(openboot_addr, "Address that openboot should be loaded at"),
>
172,173d187
< INIT_PARAM_DFLT(system_type, "Type of system we are emulating", 34),
< INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 1<<10),
184a199
> p->rom = rom;
186a202,204
> p->reset_addr = reset_addr;
> p->hypervisor_addr = hypervisor_addr;
> p->openboot_addr = openboot_addr;
193,194d210
< p->system_type = system_type;
< p->system_rev = system_rev;