timing.cc (2662:f24ae2d09e27) | timing.cc (2663:c82193ae8467) |
---|---|
1/* 2 * Copyright (c) 2002-2005 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; --- 158 unchanged lines hidden (view full) --- 167 _status = Idle; 168} 169 170 171template <class T> 172Fault 173TimingSimpleCPU::read(Addr addr, T &data, unsigned flags) 174{ | 1/* 2 * Copyright (c) 2002-2005 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; --- 158 unchanged lines hidden (view full) --- 167 _status = Idle; 168} 169 170 171template <class T> 172Fault 173TimingSimpleCPU::read(Addr addr, T &data, unsigned flags) 174{ |
175 Request *data_read_req = new Request(true); | 175 // need to fill in CPU & thread IDs here 176 Request *data_read_req = new Request(); |
176 | 177 |
177 data_read_req->setVaddr(addr); 178 data_read_req->setSize(sizeof(T)); 179 data_read_req->setFlags(flags); 180 data_read_req->setTime(curTick); | 178 data_read_req->setVirt(0, addr, sizeof(T), flags, cpuXC->readPC()); |
181 182 if (traceData) { 183 traceData->setAddr(data_read_req->getVaddr()); 184 } 185 186 // translate to physical address 187 Fault fault = cpuXC->translateDataReadReq(data_read_req); 188 --- 61 unchanged lines hidden (view full) --- 250 return read(addr, (uint32_t&)data, flags); 251} 252 253 254template <class T> 255Fault 256TimingSimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res) 257{ | 179 180 if (traceData) { 181 traceData->setAddr(data_read_req->getVaddr()); 182 } 183 184 // translate to physical address 185 Fault fault = cpuXC->translateDataReadReq(data_read_req); 186 --- 61 unchanged lines hidden (view full) --- 248 return read(addr, (uint32_t&)data, flags); 249} 250 251 252template <class T> 253Fault 254TimingSimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res) 255{ |
258 Request *data_write_req = new Request(true); 259 data_write_req->setVaddr(addr); 260 data_write_req->setTime(curTick); 261 data_write_req->setSize(sizeof(T)); 262 data_write_req->setFlags(flags); | 256 // need to fill in CPU & thread IDs here 257 Request *data_write_req = new Request(); 258 data_write_req->setVirt(0, addr, sizeof(T), flags, cpuXC->readPC()); |
263 264 // translate to physical address 265 Fault fault = cpuXC->translateDataWriteReq(data_write_req); 266 // Now do the access. 267 if (fault == NoFault) { 268 Packet *data_write_pkt = 269 new Packet(data_write_req, Packet::WriteReq, Packet::Broadcast); 270 data_write_pkt->allocate(); --- 64 unchanged lines hidden (view full) --- 335} 336 337 338void 339TimingSimpleCPU::fetch() 340{ 341 checkForInterrupts(); 342 | 259 260 // translate to physical address 261 Fault fault = cpuXC->translateDataWriteReq(data_write_req); 262 // Now do the access. 263 if (fault == NoFault) { 264 Packet *data_write_pkt = 265 new Packet(data_write_req, Packet::WriteReq, Packet::Broadcast); 266 data_write_pkt->allocate(); --- 64 unchanged lines hidden (view full) --- 331} 332 333 334void 335TimingSimpleCPU::fetch() 336{ 337 checkForInterrupts(); 338 |
343 Request *ifetch_req = new Request(true); 344 ifetch_req->setSize(sizeof(MachInst)); | 339 // need to fill in CPU & thread IDs here 340 Request *ifetch_req = new Request(); |
345 Fault fault = setupFetchRequest(ifetch_req); 346 347 ifetch_pkt = new Packet(ifetch_req, Packet::ReadReq, Packet::Broadcast); 348 ifetch_pkt->dataStatic(&inst); 349 350 if (fault == NoFault) { 351 if (!icachePort.sendTiming(ifetch_pkt)) { 352 // Need to wait for retry --- 220 unchanged lines hidden --- | 341 Fault fault = setupFetchRequest(ifetch_req); 342 343 ifetch_pkt = new Packet(ifetch_req, Packet::ReadReq, Packet::Broadcast); 344 ifetch_pkt->dataStatic(&inst); 345 346 if (fault == NoFault) { 347 if (!icachePort.sendTiming(ifetch_pkt)) { 348 // Need to wait for retry --- 220 unchanged lines hidden --- |