System object now exists for both fullsys and syscall emulation, as the
latter needs it so that Process objects can find the shared PhysicalMemory
for initialization.
Changes are incomplete: still need to fix up Process (& EioProcess) memory
initialization and syscall emulation code for new mem interface.
arch/alpha/alpha_linux_process.cc:
arch/alpha/alpha_linux_process.hh:
arch/alpha/alpha_tru64_process.cc:
arch/alpha/alpha_tru64_process.hh:
cpu/base.cc:
cpu/base.hh:
Take System argument in constructor.
cpu/exec_context.cc:
Take System argument in constructor.
Merge two constructors into a single one.
cpu/exec_context.hh:
Take System argument in constructor.
Merge two constructors into a single one.
Replace dummy translation with lookup in Process object's page table.
python/m5/objects/Process.py:
Add System parameter to Process object (& subobjects).
python/m5/objects/System.py:
Segregate full-system only Process parameters (most of them!).
sim/process.cc:
Take System argument in constructor.
Move initialization to startup() callback to occur after system & cpus
are initialized.
Generate ProxyMemory object to pass to loader for transparent
virtual page allocation.
sim/process.hh:
Take System argument in constructor.
Move initialization to startup() callback to occur after system & cpus
are initialized.
sim/system.cc:
sim/system.hh:
Enable System object for non-full-system too.
Basically involved putting most of the existing code
inside '#ifdef FULL_SYSTEM'.
Key thing needed for syscall emulation at this point is
the PhysicalMemory object (for Process initialization).
--HG--
extra : convert_revision : f0f34b47bd4f77b502191affd3d03b4d6d9bcdd8
20 lines
1.1 KiB
Python
20 lines
1.1 KiB
Python
from m5 import *
|
|
class System(SimObject):
|
|
type = 'System'
|
|
physmem = Param.PhysicalMemory(Parent.any, "phsyical memory")
|
|
|
|
if build_env['FULL_SYSTEM']:
|
|
boot_cpu_frequency = Param.Frequency(Self.cpu[0].clock.frequency,
|
|
"boot processor frequency")
|
|
memctrl = Param.MemoryController(Parent.any, "memory controller")
|
|
kernel = Param.String("file that contains the kernel code")
|
|
console = Param.String("file that contains the console code")
|
|
pal = Param.String("file that contains palcode")
|
|
readfile = Param.String("", "file to read startup script from")
|
|
init_param = Param.UInt64(0, "numerical value to pass into simulator")
|
|
boot_osflags = Param.String("a", "boot flags to pass to the kernel")
|
|
system_type = Param.UInt64("Type of system we are emulating")
|
|
system_rev = Param.UInt64("Revision of system we are emulating")
|
|
bin = Param.Bool(False, "is this system binned")
|
|
binned_fns = VectorParam.String([], "functions broken down and binned")
|