[gem5-dev] Change in gem5/gem5[develop]: dev-arm: Reduce boilerplate when read/writing to Pio devices

2021-02-08 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/40775 )


Change subject: dev-arm: Reduce boilerplate when read/writing to Pio devices
..

dev-arm: Reduce boilerplate when read/writing to Pio devices

Change-Id: Id59ac950f37d7f4f2642daf324d501da1ee622de
Signed-off-by: Giacomo Travaglini 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/40775
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
M src/dev/arm/pl011.cc
M src/dev/arm/rtc_pl031.cc
M src/dev/arm/ufs_device.cc
3 files changed, 9 insertions(+), 70 deletions(-)

Approvals:
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/dev/arm/pl011.cc b/src/dev/arm/pl011.cc
index ea76416..cfe241d 100755
--- a/src/dev/arm/pl011.cc
+++ b/src/dev/arm/pl011.cc
@@ -64,6 +64,7 @@
 Pl011::read(PacketPtr pkt)
 {
 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr +  
pioSize);

+assert(pkt->getSize() <= 4);

 Addr daddr = pkt->getAddr() - pioAddr;

@@ -145,22 +146,7 @@
 break;
 }

-switch(pkt->getSize()) {
-  case 1:
-pkt->setLE(data);
-break;
-  case 2:
-pkt->setLE(data);
-break;
-  case 4:
-pkt->setLE(data);
-break;
-  default:
-panic("Uart read size too big?\n");
-break;
-}
-
-
+pkt->setUintX(data, ByteOrder::little);
 pkt->makeAtomicResponse();
 return pioDelay;
 }
@@ -170,6 +156,7 @@
 {

 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr +  
pioSize);

+assert(pkt->getSize() <= 4);

 Addr daddr = pkt->getAddr() - pioAddr;

@@ -179,23 +166,7 @@
 // use a temporary data since the uart registers are read/written with
 // different size operations
 //
-uint32_t data = 0;
-
-switch(pkt->getSize()) {
-  case 1:
-data = pkt->getLE();
-break;
-  case 2:
-data = pkt->getLE();
-break;
-  case 4:
-data = pkt->getLE();
-break;
-  default:
-panic("Uart write size too big?\n");
-break;
-}
-
+const uint32_t data = pkt->getUintX(ByteOrder::little);

 switch (daddr) {
 case UART_DR:
diff --git a/src/dev/arm/rtc_pl031.cc b/src/dev/arm/rtc_pl031.cc
index a6cdc7d..de84384 100644
--- a/src/dev/arm/rtc_pl031.cc
+++ b/src/dev/arm/rtc_pl031.cc
@@ -61,7 +61,7 @@
 PL031::read(PacketPtr pkt)
 {
 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr +  
pioSize);

-assert(pkt->getSize() == 4);
+assert(pkt->getSize() <= 4);
 Addr daddr = pkt->getAddr() - pioAddr;
 uint32_t data;

@@ -99,22 +99,7 @@
 break;
 }

-switch(pkt->getSize()) {
-  case 1:
-pkt->setLE(data);
-break;
-  case 2:
-pkt->setLE(data);
-break;
-  case 4:
-pkt->setLE(data);
-break;
-  default:
-panic("Uart read size too big?\n");
-break;
-}
-
-
+pkt->setUintX(data, ByteOrder::little);
 pkt->makeAtomicResponse();
 return pioDelay;
 }
@@ -123,7 +108,7 @@
 PL031::write(PacketPtr pkt)
 {
 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr +  
pioSize);

-assert(pkt->getSize() == 4);
+assert(pkt->getSize() <= 4);
 Addr daddr = pkt->getAddr() - pioAddr;
 DPRINTF(Timer, "Writing to RTC at offset: %#x\n", daddr);

diff --git a/src/dev/arm/ufs_device.cc b/src/dev/arm/ufs_device.cc
index 1406e4a..e04cb39 100644
--- a/src/dev/arm/ufs_device.cc
+++ b/src/dev/arm/ufs_device.cc
@@ -1029,26 +1029,9 @@
 Tick
 UFSHostDevice::write(PacketPtr pkt)
 {
-uint32_t data = 0;
+assert(pkt->getSize() <= 4);

-switch (pkt->getSize()) {
-
-  case 1:
-data = pkt->getLE();
-break;
-
-  case 2:
-data = pkt->getLE();
-break;
-
-  case 4:
-data = pkt->getLE();
-break;
-
-  default:
-panic("Undefined UFSHCD controller write size!\n");
-break;
-}
+const uint32_t data = pkt->getUintX(ByteOrder::little);

 switch (pkt->getAddr() & 0xFF)
 {

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/40775
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Id59ac950f37d7f4f2642daf324d501da1ee622de
Gerrit-Change-Number: 40775
Gerrit-PatchSet: 2
Gerrit-Owner: Giacomo Travaglini 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: dev-arm: Reduce boilerplate when read/writing to Pio devices

2021-02-05 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/40775 )



Change subject: dev-arm: Reduce boilerplate when read/writing to Pio devices
..

dev-arm: Reduce boilerplate when read/writing to Pio devices

Change-Id: Id59ac950f37d7f4f2642daf324d501da1ee622de
Signed-off-by: Giacomo Travaglini 
---
M src/dev/arm/pl011.cc
M src/dev/arm/rtc_pl031.cc
M src/dev/arm/ufs_device.cc
3 files changed, 9 insertions(+), 70 deletions(-)



diff --git a/src/dev/arm/pl011.cc b/src/dev/arm/pl011.cc
index ea76416..cfe241d 100755
--- a/src/dev/arm/pl011.cc
+++ b/src/dev/arm/pl011.cc
@@ -64,6 +64,7 @@
 Pl011::read(PacketPtr pkt)
 {
 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr +  
pioSize);

+assert(pkt->getSize() <= 4);

 Addr daddr = pkt->getAddr() - pioAddr;

@@ -145,22 +146,7 @@
 break;
 }

-switch(pkt->getSize()) {
-  case 1:
-pkt->setLE(data);
-break;
-  case 2:
-pkt->setLE(data);
-break;
-  case 4:
-pkt->setLE(data);
-break;
-  default:
-panic("Uart read size too big?\n");
-break;
-}
-
-
+pkt->setUintX(data, ByteOrder::little);
 pkt->makeAtomicResponse();
 return pioDelay;
 }
@@ -170,6 +156,7 @@
 {

 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr +  
pioSize);

+assert(pkt->getSize() <= 4);

 Addr daddr = pkt->getAddr() - pioAddr;

@@ -179,23 +166,7 @@
 // use a temporary data since the uart registers are read/written with
 // different size operations
 //
-uint32_t data = 0;
-
-switch(pkt->getSize()) {
-  case 1:
-data = pkt->getLE();
-break;
-  case 2:
-data = pkt->getLE();
-break;
-  case 4:
-data = pkt->getLE();
-break;
-  default:
-panic("Uart write size too big?\n");
-break;
-}
-
+const uint32_t data = pkt->getUintX(ByteOrder::little);

 switch (daddr) {
 case UART_DR:
diff --git a/src/dev/arm/rtc_pl031.cc b/src/dev/arm/rtc_pl031.cc
index a6cdc7d..de84384 100644
--- a/src/dev/arm/rtc_pl031.cc
+++ b/src/dev/arm/rtc_pl031.cc
@@ -61,7 +61,7 @@
 PL031::read(PacketPtr pkt)
 {
 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr +  
pioSize);

-assert(pkt->getSize() == 4);
+assert(pkt->getSize() <= 4);
 Addr daddr = pkt->getAddr() - pioAddr;
 uint32_t data;

@@ -99,22 +99,7 @@
 break;
 }

-switch(pkt->getSize()) {
-  case 1:
-pkt->setLE(data);
-break;
-  case 2:
-pkt->setLE(data);
-break;
-  case 4:
-pkt->setLE(data);
-break;
-  default:
-panic("Uart read size too big?\n");
-break;
-}
-
-
+pkt->setUintX(data, ByteOrder::little);
 pkt->makeAtomicResponse();
 return pioDelay;
 }
@@ -123,7 +108,7 @@
 PL031::write(PacketPtr pkt)
 {
 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr +  
pioSize);

-assert(pkt->getSize() == 4);
+assert(pkt->getSize() <= 4);
 Addr daddr = pkt->getAddr() - pioAddr;
 DPRINTF(Timer, "Writing to RTC at offset: %#x\n", daddr);

diff --git a/src/dev/arm/ufs_device.cc b/src/dev/arm/ufs_device.cc
index 1406e4a..e04cb39 100644
--- a/src/dev/arm/ufs_device.cc
+++ b/src/dev/arm/ufs_device.cc
@@ -1029,26 +1029,9 @@
 Tick
 UFSHostDevice::write(PacketPtr pkt)
 {
-uint32_t data = 0;
+assert(pkt->getSize() <= 4);

-switch (pkt->getSize()) {
-
-  case 1:
-data = pkt->getLE();
-break;
-
-  case 2:
-data = pkt->getLE();
-break;
-
-  case 4:
-data = pkt->getLE();
-break;
-
-  default:
-panic("Undefined UFSHCD controller write size!\n");
-break;
-}
+const uint32_t data = pkt->getUintX(ByteOrder::little);

 switch (pkt->getAddr() & 0xFF)
 {

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/40775
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Id59ac950f37d7f4f2642daf324d501da1ee622de
Gerrit-Change-Number: 40775
Gerrit-PatchSet: 1
Gerrit-Owner: Giacomo Travaglini 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s