changeset 7efee7268e87 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=7efee7268e87
description:
dev: Extend access width for IDE control registers
Add 32-bit access width for PrimaryTiming register and 16bit for
UDMAControl
register as FreeBSD required.
Committed by: Nilay Vaish <[email protected]>
diffstat:
src/dev/ide_ctrl.cc | 26 ++++++++++++++++++++++----
1 files changed, 22 insertions(+), 4 deletions(-)
diffs (61 lines):
diff -r 68d688cbe26c -r 7efee7268e87 src/dev/ide_ctrl.cc
--- a/src/dev/ide_ctrl.cc Fri Apr 03 11:42:10 2015 -0500
+++ b/src/dev/ide_ctrl.cc Fri Apr 03 11:42:10 2015 -0500
@@ -202,6 +202,9 @@
break;
case sizeof(uint16_t):
switch (offset) {
+ case UDMAControl:
+ pkt->set<uint16_t>(udmaControl);
+ break;
case PrimaryTiming:
pkt->set<uint16_t>(primaryTiming);
break;
@@ -222,10 +225,16 @@
(uint32_t)pkt->get<uint16_t>());
break;
case sizeof(uint32_t):
- if (offset == IDEConfig)
+ switch (offset) {
+ case PrimaryTiming:
+ pkt->set<uint32_t>(primaryTiming);
+ break;
+ case IDEConfig:
pkt->set<uint32_t>(ideConfig);
- else
+ break;
+ default:
panic("No 32bit reads implemented for this device.");
+ }
DPRINTF(IdeCtrl, "PCI read offset: %#x size: 4 data: %#x\n", offset,
(uint32_t)pkt->get<uint32_t>());
break;
@@ -268,6 +277,9 @@
break;
case sizeof(uint16_t):
switch (offset) {
+ case UDMAControl:
+ udmaControl = pkt->get<uint16_t>();
+ break;
case PrimaryTiming:
primaryTiming = pkt->get<uint16_t>();
break;
@@ -289,10 +301,16 @@
offset, (uint32_t)pkt->get<uint16_t>());
break;
case sizeof(uint32_t):
- if (offset == IDEConfig)
+ switch (offset) {
+ case PrimaryTiming:
+ primaryTiming = pkt->get<uint32_t>();
+ break;
+ case IDEConfig:
ideConfig = pkt->get<uint32_t>();
- else
+ break;
+ default:
panic("Write of unimplemented PCI config. register: %x\n",
offset);
+ }
break;
default:
panic("invalid access size(?) for PCI configspace!\n");
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev