cache.hh (11484:08b33c52a16d) cache.hh (11601:382e0637fae0)
1/*
2 * Copyright (c) 2012-2016 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

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

298 /**
299 * Invalidate a cache block.
300 *
301 * @param blk Block to invalidate
302 */
303 void invalidateBlock(CacheBlk *blk);
304
305 /**
1/*
2 * Copyright (c) 2012-2016 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

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

298 /**
299 * Invalidate a cache block.
300 *
301 * @param blk Block to invalidate
302 */
303 void invalidateBlock(CacheBlk *blk);
304
305 /**
306 * Maintain the clusivity of this cache by potentially
307 * invalidating a block. This method works in conjunction with
308 * satisfyRequest, but is separate to allow us to handle all MSHR
309 * targets before potentially dropping a block.
310 *
311 * @param from_cache Whether we have dealt with a packet from a cache
312 * @param blk The block that should potentially be dropped
313 */
314 void maintainClusivity(bool from_cache, CacheBlk *blk);
315
316 /**
306 * Populates a cache block and handles all outstanding requests for the
307 * satisfied fill request. This version takes two memory requests. One
308 * contains the fill data, the other is an optional target to satisfy.
309 * @param pkt The memory request with the fill data.
310 * @param blk The cache block if it already exists.
311 * @param writebacks List for any writebacks that need to be performed.
312 * @param allocate Whether to allocate a block or use the temp block
313 * @return Pointer to the new cache block.

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

396
397 /**
398 * Performs the access specified by the request.
399 * @param pkt The request to perform.
400 * @param fromCpuSide from the CPU side port or the memory side port
401 */
402 void functionalAccess(PacketPtr pkt, bool fromCpuSide);
403
317 * Populates a cache block and handles all outstanding requests for the
318 * satisfied fill request. This version takes two memory requests. One
319 * contains the fill data, the other is an optional target to satisfy.
320 * @param pkt The memory request with the fill data.
321 * @param blk The cache block if it already exists.
322 * @param writebacks List for any writebacks that need to be performed.
323 * @param allocate Whether to allocate a block or use the temp block
324 * @return Pointer to the new cache block.

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

407
408 /**
409 * Performs the access specified by the request.
410 * @param pkt The request to perform.
411 * @param fromCpuSide from the CPU side port or the memory side port
412 */
413 void functionalAccess(PacketPtr pkt, bool fromCpuSide);
414
404 void satisfyCpuSideRequest(PacketPtr pkt, CacheBlk *blk,
405 bool deferred_response = false,
406 bool pending_downgrade = false);
407 bool satisfyMSHR(MSHR *mshr, PacketPtr pkt, CacheBlk *blk);
415 /**
416 * Perform any necessary updates to the block and perform any data
417 * exchange between the packet and the block. The flags of the
418 * packet are also set accordingly.
419 *
420 * @param pkt Request packet from upstream that hit a block
421 * @param blk Cache block that the packet hit
422 * @param deferred_response Whether this hit is to block that
423 * originally missed
424 * @param pending_downgrade Whether the writable flag is to be removed
425 *
426 * @return True if the block is to be invalidated
427 */
428 void satisfyRequest(PacketPtr pkt, CacheBlk *blk,
429 bool deferred_response = false,
430 bool pending_downgrade = false);
408
409 void doTimingSupplyResponse(PacketPtr req_pkt, const uint8_t *blk_data,
410 bool already_copied, bool pending_inval);
411
412 /**
413 * Perform an upward snoop if needed, and update the block state
414 * (possibly invalidating the block). Also create a response if required.
415 *

--- 194 unchanged lines hidden ---
431
432 void doTimingSupplyResponse(PacketPtr req_pkt, const uint8_t *blk_data,
433 bool already_copied, bool pending_inval);
434
435 /**
436 * Perform an upward snoop if needed, and update the block state
437 * (possibly invalidating the block). Also create a response if required.
438 *

--- 194 unchanged lines hidden ---