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)