dev: Use the new ByteOrder param type in VirtIO devices

VirtIO devices currently request their endianness from the System
object. Instead of explicitly querying the system for its endianness,
expose the device's endianness as a param. This param defaults to the
endianness of a parent object using the Parent proxy (in practice the
system).

Change-Id: If4f84ff61f4d064bdd015a881790f5af03de6535
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33296
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
This commit is contained in:
Andreas Sandberg
2020-08-24 18:00:57 +01:00
parent 4925855557
commit f2bda57a96
2 changed files with 3 additions and 2 deletions

View File

@@ -50,6 +50,7 @@ class VirtIODeviceBase(SimObject):
subsystem = Param.UInt8(0x00, "VirtIO subsystem ID")
system = Param.System(Parent.any, "system object")
byte_order = Param.ByteOrder(Parent.byte_order, "Device byte order")
class VirtIODummyDevice(VirtIODeviceBase):
type = 'VirtIODummyDevice'

View File

@@ -37,10 +37,10 @@
#include "dev/virtio/base.hh"
#include "base/trace.hh"
#include "debug/VIO.hh"
#include "params/VirtIODeviceBase.hh"
#include "params/VirtIODummyDevice.hh"
#include "sim/system.hh"
VirtDescriptor::VirtDescriptor(PortProxy &_memProxy, ByteOrder bo,
VirtQueue &_queue, Index descIndex)
@@ -326,7 +326,7 @@ VirtIODeviceBase::VirtIODeviceBase(Params *params, DeviceId id,
size_t config_size, FeatureBits features)
: SimObject(params),
guestFeatures(0),
byteOrder(params->system->getGuestByteOrder()),
byteOrder(params->byte_order),
deviceId(id), configSize(config_size), deviceFeatures(features),
_deviceStatus(0), _queueSelect(0)
{