Deleted Added
sdiff udiff text old ( 8922:17f037ad8918 ) new ( 9015:7f4d25789dc4 )
full compact
1/*
2 * Copyright (c) 2010-2012 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
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

--- 35 unchanged lines hidden (view full) ---

46#include "arch/arm/tlb.hh"
47#include "dev/io_device.hh"
48#include "mem/mem_object.hh"
49#include "mem/request.hh"
50#include "params/ArmTableWalker.hh"
51#include "sim/eventq.hh"
52#include "sim/fault_fwd.hh"
53
54class ThreadContext;
55
56namespace ArmISA {
57class Translation;
58class TLB;
59
60class TableWalker : public MemObject
61{

--- 192 unchanged lines hidden (view full) ---

254 /** This entry needs to be written back to memory */
255 bool dirty() const
256 {
257 return _dirty;
258 }
259
260 };
261
262 protected:
263
264 /**
265 * A snooping DMA port that currently does nothing besides
266 * extending the DMA port to accept snoops without complaining.
267 */
268 class SnoopingDmaPort : public DmaPort
269 {
270
271 protected:
272
273 virtual void recvTimingSnoopReq(PacketPtr pkt)
274 { }
275
276 virtual Tick recvAtomicSnoop(PacketPtr pkt)
277 { return 0; }
278
279 virtual void recvFunctionalSnoop(PacketPtr pkt)
280 { }
281
282 virtual bool isSnooping() const { return true; }
283
284 public:
285
286 /**
287 * A snooping DMA port merely calls the construtor of the DMA
288 * port.
289 */
290 SnoopingDmaPort(MemObject *dev, System *s, Tick min_backoff,
291 Tick max_backoff) :
292 DmaPort(dev, s, min_backoff, max_backoff)
293 { }
294 };
295
296 struct WalkerState //: public SimObject
297 {
298 /** Thread context that we're doing the walk for */
299 ThreadContext *tc;
300
301 /** Request that is currently being serviced */
302 RequestPtr req;
303

--- 53 unchanged lines hidden (view full) ---

357 std::list<WalkerState *> stateQueueL2;
358
359 /** Queue of requests that have passed are waiting because the walker is
360 * currently busy. */
361 std::list<WalkerState *> pendingQueue;
362
363
364 /** Port to issue translation requests from */
365 SnoopingDmaPort port;
366
367 /** TLB that is initiating these table walks */
368 TLB *tlb;
369
370 /** Cached copy of the sctlr as it existed when translation began */
371 SCTLR sctlr;
372
373 WalkerState *currState;

--- 52 unchanged lines hidden ---