dev-arm: Avoid code duplication in Pl111

Change-Id: I17af93459ace0e4ef82693622a4135c3e831aaf5
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/31176
Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Giacomo Travaglini
2020-07-10 16:46:22 +01:00
parent a1a0dd8d97
commit df1324b999

View File

@@ -203,21 +203,7 @@ Pl111::read(PacketPtr pkt)
}
}
switch(pkt->getSize()) {
case 1:
pkt->setLE<uint8_t>(data);
break;
case 2:
pkt->setLE<uint16_t>(data);
break;
case 4:
pkt->setLE<uint32_t>(data);
break;
default:
panic("CLCD controller read size too big?\n");
break;
}
pkt->setUintX(data, LittleEndianByteOrder);
pkt->makeAtomicResponse();
return pioDelay;
}
@@ -229,22 +215,7 @@ Pl111::write(PacketPtr pkt)
// use a temporary data since the LCD registers are read/written with
// different size operations
//
uint32_t data = 0;
switch(pkt->getSize()) {
case 1:
data = pkt->getLE<uint8_t>();
break;
case 2:
data = pkt->getLE<uint16_t>();
break;
case 4:
data = pkt->getLE<uint32_t>();
break;
default:
panic("PL111 CLCD controller write size too big?\n");
break;
}
const uint32_t data = pkt->getUintX(LittleEndianByteOrder);
assert(pkt->getAddr() >= pioAddr &&
pkt->getAddr() < pioAddr + pioSize);