tsunami_pchip.cc (4762:c94e103c83ad) | tsunami_pchip.cc (4870:fcc39d001154) |
---|---|
1/* 2 * Copyright (c) 2004-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; --- 29 unchanged lines hidden (view full) --- 38#include <vector> 39 40#include "base/trace.hh" 41#include "dev/alpha/tsunami_pchip.hh" 42#include "dev/alpha/tsunamireg.h" 43#include "dev/alpha/tsunami.hh" 44#include "mem/packet.hh" 45#include "mem/packet_access.hh" | 1/* 2 * Copyright (c) 2004-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; --- 29 unchanged lines hidden (view full) --- 38#include <vector> 39 40#include "base/trace.hh" 41#include "dev/alpha/tsunami_pchip.hh" 42#include "dev/alpha/tsunamireg.h" 43#include "dev/alpha/tsunami.hh" 44#include "mem/packet.hh" 45#include "mem/packet_access.hh" |
46#include "sim/builder.hh" |
|
46#include "sim/system.hh" 47 48using namespace std; 49//Should this be AlphaISA? 50using namespace TheISA; 51 | 47#include "sim/system.hh" 48 49using namespace std; 50//Should this be AlphaISA? 51using namespace TheISA; 52 |
52TsunamiPChip::TsunamiPChip(const Params *p) | 53TsunamiPChip::TsunamiPChip(Params *p) |
53: BasicPioDevice(p) 54{ 55 pioSize = 0x1000; 56 57 for (int i = 0; i < 4; i++) { 58 wsba[i] = 0; 59 wsm[i] = 0; 60 tba[i] = 0; --- 4 unchanged lines hidden (view full) --- 65 66 //Set back pointer in tsunami 67 p->tsunami->pchip = this; 68} 69 70Tick 71TsunamiPChip::read(PacketPtr pkt) 72{ | 54: BasicPioDevice(p) 55{ 56 pioSize = 0x1000; 57 58 for (int i = 0; i < 4; i++) { 59 wsba[i] = 0; 60 wsm[i] = 0; 61 tba[i] = 0; --- 4 unchanged lines hidden (view full) --- 66 67 //Set back pointer in tsunami 68 p->tsunami->pchip = this; 69} 70 71Tick 72TsunamiPChip::read(PacketPtr pkt) 73{ |
73 assert(pkt->result == Packet::Unknown); | |
74 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); 75 76 pkt->allocate(); 77 Addr daddr = (pkt->getAddr() - pioAddr) >> 6;; 78 assert(pkt->getSize() == sizeof(uint64_t)); 79 80 81 DPRINTF(Tsunami, "read va=%#x size=%d\n", pkt->getAddr(), pkt->getSize()); --- 57 unchanged lines hidden (view full) --- 139 break; 140 case TSDEV_PC_PMONCTL: 141 panic("PC_PMONCTL not implemented\n"); 142 case TSDEV_PC_PMONCNT: 143 panic("PC_PMONCTN not implemented\n"); 144 default: 145 panic("Default in PChip Read reached reading 0x%x\n", daddr); 146 } | 74 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); 75 76 pkt->allocate(); 77 Addr daddr = (pkt->getAddr() - pioAddr) >> 6;; 78 assert(pkt->getSize() == sizeof(uint64_t)); 79 80 81 DPRINTF(Tsunami, "read va=%#x size=%d\n", pkt->getAddr(), pkt->getSize()); --- 57 unchanged lines hidden (view full) --- 139 break; 140 case TSDEV_PC_PMONCTL: 141 panic("PC_PMONCTL not implemented\n"); 142 case TSDEV_PC_PMONCNT: 143 panic("PC_PMONCTN not implemented\n"); 144 default: 145 panic("Default in PChip Read reached reading 0x%x\n", daddr); 146 } |
147 pkt->result = Packet::Success; | 147 pkt->makeAtomicResponse(); |
148 return pioDelay; 149 150} 151 152Tick 153TsunamiPChip::write(PacketPtr pkt) 154{ | 148 return pioDelay; 149 150} 151 152Tick 153TsunamiPChip::write(PacketPtr pkt) 154{ |
155 assert(pkt->result == Packet::Unknown); | |
156 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); 157 Addr daddr = (pkt->getAddr() - pioAddr) >> 6; 158 159 assert(pkt->getSize() == sizeof(uint64_t)); 160 161 DPRINTF(Tsunami, "write - va=%#x size=%d \n", pkt->getAddr(), pkt->getSize()); 162 163 switch(daddr) { --- 54 unchanged lines hidden (view full) --- 218 panic("PC_PMONCTL not implemented\n"); 219 case TSDEV_PC_PMONCNT: 220 panic("PC_PMONCTN not implemented\n"); 221 default: 222 panic("Default in PChip write reached reading 0x%x\n", daddr); 223 224 } // uint64_t 225 | 155 assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); 156 Addr daddr = (pkt->getAddr() - pioAddr) >> 6; 157 158 assert(pkt->getSize() == sizeof(uint64_t)); 159 160 DPRINTF(Tsunami, "write - va=%#x size=%d \n", pkt->getAddr(), pkt->getSize()); 161 162 switch(daddr) { --- 54 unchanged lines hidden (view full) --- 217 panic("PC_PMONCTL not implemented\n"); 218 case TSDEV_PC_PMONCNT: 219 panic("PC_PMONCTN not implemented\n"); 220 default: 221 panic("Default in PChip write reached reading 0x%x\n", daddr); 222 223 } // uint64_t 224 |
226 pkt->result = Packet::Success; | 225 pkt->makeAtomicResponse(); |
227 return pioDelay; 228} 229 230#define DMA_ADDR_MASK ULL(0x3ffffffff) 231 232Addr 233TsunamiPChip::translatePciToDma(Addr busAddr) 234{ --- 93 unchanged lines hidden (view full) --- 328{ 329 UNSERIALIZE_SCALAR(pctl); 330 UNSERIALIZE_ARRAY(wsba, 4); 331 UNSERIALIZE_ARRAY(wsm, 4); 332 UNSERIALIZE_ARRAY(tba, 4); 333} 334 335 | 226 return pioDelay; 227} 228 229#define DMA_ADDR_MASK ULL(0x3ffffffff) 230 231Addr 232TsunamiPChip::translatePciToDma(Addr busAddr) 233{ --- 93 unchanged lines hidden (view full) --- 327{ 328 UNSERIALIZE_SCALAR(pctl); 329 UNSERIALIZE_ARRAY(wsba, 4); 330 UNSERIALIZE_ARRAY(wsm, 4); 331 UNSERIALIZE_ARRAY(tba, 4); 332} 333 334 |
336TsunamiPChip * 337TsunamiPChipParams::create() | 335BEGIN_DECLARE_SIM_OBJECT_PARAMS(TsunamiPChip) 336 337 Param<Addr> pio_addr; 338 Param<Tick> pio_latency; 339 SimObjectParam<Platform *> platform; 340 SimObjectParam<System *> system; 341 SimObjectParam<Tsunami *> tsunami; 342 343END_DECLARE_SIM_OBJECT_PARAMS(TsunamiPChip) 344 345BEGIN_INIT_SIM_OBJECT_PARAMS(TsunamiPChip) 346 347 INIT_PARAM(pio_addr, "Device Address"), 348 INIT_PARAM(pio_latency, "Programmed IO latency"), 349 INIT_PARAM(platform, "platform"), 350 INIT_PARAM(system, "system object"), 351 INIT_PARAM(tsunami, "Tsunami") 352 353END_INIT_SIM_OBJECT_PARAMS(TsunamiPChip) 354 355CREATE_SIM_OBJECT(TsunamiPChip) |
338{ | 356{ |
339 return new TsunamiPChip(this); | 357 TsunamiPChip::Params *p = new TsunamiPChip::Params; 358 p->name = getInstanceName(); 359 p->pio_addr = pio_addr; 360 p->pio_delay = pio_latency; 361 p->platform = platform; 362 p->system = system; 363 p->tsunami = tsunami; 364 return new TsunamiPChip(p); |
340} | 365} |
366 367REGISTER_SIM_OBJECT("TsunamiPChip", TsunamiPChip) |
|