pl011.cc (13024:aa7890e43dab) pl011.cc (13230:2988dc5d1d6f)
1/*
2 * Copyright (c) 2010, 2015 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 122 unchanged lines hidden (view full) ---

131 break;
132 case UART_MIS:
133 DPRINTF(Uart, "Reading Masked Int status as 0x%x\n", maskInt());
134 data = maskInt();
135 break;
136 default:
137 if (readId(pkt, AMBA_ID, pioAddr)) {
138 // Hack for variable size accesses
1/*
2 * Copyright (c) 2010, 2015 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 122 unchanged lines hidden (view full) ---

131 break;
132 case UART_MIS:
133 DPRINTF(Uart, "Reading Masked Int status as 0x%x\n", maskInt());
134 data = maskInt();
135 break;
136 default:
137 if (readId(pkt, AMBA_ID, pioAddr)) {
138 // Hack for variable size accesses
139 data = pkt->get();
139 data = pkt->getLE<uint32_t>();
140 break;
141 }
142
143 panic("Tried to read PL011 at offset %#x that doesn't exist\n", daddr);
144 break;
145 }
146
147 switch(pkt->getSize()) {
148 case 1:
140 break;
141 }
142
143 panic("Tried to read PL011 at offset %#x that doesn't exist\n", daddr);
144 break;
145 }
146
147 switch(pkt->getSize()) {
148 case 1:
149 pkt->set(data);
149 pkt->setLE<uint8_t>(data);
150 break;
151 case 2:
150 break;
151 case 2:
152 pkt->set(data);
152 pkt->setLE<uint16_t>(data);
153 break;
154 case 4:
153 break;
154 case 4:
155 pkt->set(data);
155 pkt->setLE<uint32_t>(data);
156 break;
157 default:
158 panic("Uart read size too big?\n");
159 break;
160 }
161
162
163 pkt->makeAtomicResponse();

--- 4 unchanged lines hidden (view full) ---

168Pl011::write(PacketPtr pkt)
169{
170
171 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize);
172
173 Addr daddr = pkt->getAddr() - pioAddr;
174
175 DPRINTF(Uart, " write register %#x value %#x size=%d\n", daddr,
156 break;
157 default:
158 panic("Uart read size too big?\n");
159 break;
160 }
161
162
163 pkt->makeAtomicResponse();

--- 4 unchanged lines hidden (view full) ---

168Pl011::write(PacketPtr pkt)
169{
170
171 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize);
172
173 Addr daddr = pkt->getAddr() - pioAddr;
174
175 DPRINTF(Uart, " write register %#x value %#x size=%d\n", daddr,
176 pkt->get(), pkt->getSize());
176 pkt->getLE<uint8_t>(), pkt->getSize());
177
178 // use a temporary data since the uart registers are read/written with
179 // different size operations
180 //
181 uint32_t data = 0;
182
183 switch(pkt->getSize()) {
184 case 1:
177
178 // use a temporary data since the uart registers are read/written with
179 // different size operations
180 //
181 uint32_t data = 0;
182
183 switch(pkt->getSize()) {
184 case 1:
185 data = pkt->get();
185 data = pkt->getLE<uint8_t>();
186 break;
187 case 2:
186 break;
187 case 2:
188 data = pkt->get();
188 data = pkt->getLE<uint16_t>();
189 break;
190 case 4:
189 break;
190 case 4:
191 data = pkt->get();
191 data = pkt->getLE<uint32_t>();
192 break;
193 default:
194 panic("Uart write size too big?\n");
195 break;
196 }
197
198
199 switch (daddr) {

--- 125 unchanged lines hidden ---
192 break;
193 default:
194 panic("Uart write size too big?\n");
195 break;
196 }
197
198
199 switch (daddr) {

--- 125 unchanged lines hidden ---