python/m5/config.py:
- Enhanced Proxy class now supports subscripting, e.g.,
parent.cpu[0] or even parent.cpu[0].icache.
- Proxy also supports multiplication (e.g., parent.cycle * 3),
though this feature has not been tested.
- Subscript 0 works even on non-lists, so you can safely say
cpu[0] and get the first cpu even if there's only one.
- Changed name of proxy object from 'Super' to 'parent', and
changed "wild card" notation from plain 'Super' to 'parent.any'.
python/m5/objects/AlphaConsole.mpy:
python/m5/objects/BaseCPU.mpy:
python/m5/objects/BaseSystem.mpy:
python/m5/objects/Device.mpy:
python/m5/objects/Ethernet.mpy:
python/m5/objects/Ide.mpy:
python/m5/objects/IntrControl.mpy:
python/m5/objects/Pci.mpy:
python/m5/objects/PhysicalMemory.mpy:
python/m5/objects/Platform.mpy:
python/m5/objects/SimConsole.mpy:
python/m5/objects/SimpleDisk.mpy:
python/m5/objects/Tsunami.mpy:
python/m5/objects/Uart.mpy:
Change 'Super.foo' to 'parent.foo' (and 'Super' to 'parent.any').
--HG--
extra : convert_revision : f996d0a3366d5e3e60ae5973691148c3d7cd497d
34 lines
1.2 KiB
Plaintext
34 lines
1.2 KiB
Plaintext
from FunctionalMemory import FunctionalMemory
|
|
|
|
# This device exists only because there are some devices that I don't
|
|
# want to have a Platform parameter because it would cause a cycle in
|
|
# the C++ that cannot be easily solved.
|
|
#
|
|
# The real solution to this problem is to pass the ParamXXX structure
|
|
# to the constructor, but with the express condition that SimObject
|
|
# parameter values are not to be available at construction time. If
|
|
# some further configuration must be done, it must be done during the
|
|
# initialization phase at which point all SimObject pointers will be
|
|
# valid.
|
|
simobj FooPioDevice(FunctionalMemory):
|
|
type = 'PioDevice'
|
|
abstract = True
|
|
addr = Param.Addr("Device Address")
|
|
mmu = Param.MemoryController(parent.any, "Memory Controller")
|
|
io_bus = Param.Bus(NULL, "The IO Bus to attach to")
|
|
pio_latency = Param.Tick(1, "Programmed IO latency in bus cycles")
|
|
|
|
simobj FooDmaDevice(FooPioDevice):
|
|
type = 'DmaDevice'
|
|
abstract = True
|
|
|
|
simobj PioDevice(FooPioDevice):
|
|
type = 'PioDevice'
|
|
abstract = True
|
|
platform = Param.Platform(parent.any, "Platform")
|
|
|
|
simobj DmaDevice(PioDevice):
|
|
type = 'DmaDevice'
|
|
abstract = True
|
|
|