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 | 149 pkt->setLE<uint8_t>(data); |
150 break; 151 case 2: | 150 break; 151 case 2: |
152 pkt->set | 152 pkt->setLE<uint16_t>(data); |
153 break; 154 case 4: | 153 break; 154 case 4: |
155 pkt->set | 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 | 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 --- |