table_walker.hh (8922:17f037ad8918) table_walker.hh (9015:7f4d25789dc4)
1/*
1/*
2 * Copyright (c) 2010 ARM Limited
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
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 DmaPort;
55class ThreadContext;
56
57namespace ArmISA {
58class Translation;
59class TLB;
60
61class TableWalker : public MemObject
62{

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

255 /** This entry needs to be written back to memory */
256 bool dirty() const
257 {
258 return _dirty;
259 }
260
261 };
262
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
263 struct WalkerState //: public SimObject
264 {
265 /** Thread context that we're doing the walk for */
266 ThreadContext *tc;
267
268 /** Request that is currently being serviced */
269 RequestPtr req;
270

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

324 std::list<WalkerState *> stateQueueL2;
325
326 /** Queue of requests that have passed are waiting because the walker is
327 * currently busy. */
328 std::list<WalkerState *> pendingQueue;
329
330
331 /** Port to issue translation requests from */
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 */
332 DmaPort port;
365 SnoopingDmaPort port;
333
334 /** TLB that is initiating these table walks */
335 TLB *tlb;
336
337 /** Cached copy of the sctlr as it existed when translation began */
338 SCTLR sctlr;
339
340 WalkerState *currState;

--- 52 unchanged lines hidden ---
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 ---