iob.cc (11005:e7f403b6b76f) | iob.cc (11294:a368064a2ab5) |
---|---|
1/* 2 * Copyright (c) 2006 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 77 unchanged lines hidden (view full) --- 86 return pioDelay; 87} 88 89void 90Iob::readIob(PacketPtr pkt) 91{ 92 Addr accessAddr = pkt->getAddr() - iobManAddr; 93 | 1/* 2 * Copyright (c) 2006 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 77 unchanged lines hidden (view full) --- 86 return pioDelay; 87} 88 89void 90Iob::readIob(PacketPtr pkt) 91{ 92 Addr accessAddr = pkt->getAddr() - iobManAddr; 93 |
94 if (accessAddr >= IntManAddr && accessAddr < IntManAddr + IntManSize) { | 94 assert(IntManAddr == 0); 95 if (accessAddr < IntManAddr + IntManSize) { |
95 int index = (accessAddr - IntManAddr) >> 3; 96 uint64_t data = intMan[index].cpu << 8 | intMan[index].vector << 0; 97 pkt->set(data); 98 return; 99 } 100 101 if (accessAddr >= IntCtlAddr && accessAddr < IntCtlAddr + IntCtlSize) { 102 int index = (accessAddr - IntCtlAddr) >> 3; --- 78 unchanged lines hidden (view full) --- 181 182void 183Iob::writeIob(PacketPtr pkt) 184{ 185 Addr accessAddr = pkt->getAddr() - iobManAddr; 186 int index; 187 uint64_t data; 188 | 96 int index = (accessAddr - IntManAddr) >> 3; 97 uint64_t data = intMan[index].cpu << 8 | intMan[index].vector << 0; 98 pkt->set(data); 99 return; 100 } 101 102 if (accessAddr >= IntCtlAddr && accessAddr < IntCtlAddr + IntCtlSize) { 103 int index = (accessAddr - IntCtlAddr) >> 3; --- 78 unchanged lines hidden (view full) --- 182 183void 184Iob::writeIob(PacketPtr pkt) 185{ 186 Addr accessAddr = pkt->getAddr() - iobManAddr; 187 int index; 188 uint64_t data; 189 |
189 if (accessAddr >= IntManAddr && accessAddr < IntManAddr + IntManSize) { | 190 assert(IntManAddr == 0); 191 if (accessAddr < IntManAddr + IntManSize) { |
190 index = (accessAddr - IntManAddr) >> 3; 191 data = pkt->get<uint64_t>(); 192 intMan[index].cpu = bits(data,12,8); 193 intMan[index].vector = bits(data,5,0); 194 DPRINTF(Iob, "Wrote IntMan %d cpu %d, vec %d\n", index, 195 intMan[index].cpu, intMan[index].vector); 196 return; 197 } --- 184 unchanged lines hidden --- | 192 index = (accessAddr - IntManAddr) >> 3; 193 data = pkt->get<uint64_t>(); 194 intMan[index].cpu = bits(data,12,8); 195 intMan[index].vector = bits(data,5,0); 196 DPRINTF(Iob, "Wrote IntMan %d cpu %d, vec %d\n", index, 197 intMan[index].cpu, intMan[index].vector); 198 return; 199 } --- 184 unchanged lines hidden --- |