From b77da23e1ae15eff2475d16f11b0b394b82c831e Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Mon, 28 Aug 2006 11:01:25 -0700 Subject: Get rid of unneeded union. Verify that BAR sizes are powers of two. --HG-- extra : convert_revision : ce8dca07aaf1a340cc166b99b5858613a954e2fd --- src/dev/pcidev.cc | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/dev/pcidev.cc') diff --git a/src/dev/pcidev.cc b/src/dev/pcidev.cc index 9e6d5cd37..3e4238908 100644 --- a/src/dev/pcidev.cc +++ b/src/dev/pcidev.cc @@ -429,12 +429,12 @@ CREATE_SIM_OBJECT(PciConfigData) data->config.headerType = htole(HeaderType); data->config.bist = htole(BIST); - data->config.baseAddr0 = htole(BAR0); - data->config.baseAddr1 = htole(BAR1); - data->config.baseAddr2 = htole(BAR2); - data->config.baseAddr3 = htole(BAR3); - data->config.baseAddr4 = htole(BAR4); - data->config.baseAddr5 = htole(BAR5); + data->config.baseAddr[0] = htole(BAR0); + data->config.baseAddr[1] = htole(BAR1); + data->config.baseAddr[2] = htole(BAR2); + data->config.baseAddr[3] = htole(BAR3); + data->config.baseAddr[4] = htole(BAR4); + data->config.baseAddr[5] = htole(BAR5); data->config.cardbusCIS = htole(CardbusCIS); data->config.subsystemVendorID = htole(SubsystemVendorID); data->config.subsystemID = htole(SubsystemVendorID); @@ -451,6 +451,14 @@ CREATE_SIM_OBJECT(PciConfigData) data->BARSize[4] = BAR4Size; data->BARSize[5] = BAR5Size; + for (int i = 0; i < 6; ++i) { + uint32_t barsize = data->BARSize[i]; + if (barsize != 0 && !isPowerOf2(barsize)) { + fatal("%s: BAR %d size %d is not a power of 2\n", + getInstanceName(), i, data->BARSize[i]); + } + } + return data; } -- cgit v1.2.3