gem5 v24.0.0.0
Loading...
Searching...
No Matches
cache_blk.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2012-2013, 2023-2024 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
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
14 * Copyright (c) 2020 Inria
15 * Copyright (c) 2007 The Regents of The University of Michigan
16 * All rights reserved.
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions are
20 * met: redistributions of source code must retain the above copyright
21 * notice, this list of conditions and the following disclaimer;
22 * redistributions in binary form must reproduce the above copyright
23 * notice, this list of conditions and the following disclaimer in the
24 * documentation and/or other materials provided with the distribution;
25 * neither the name of the copyright holders nor the names of its
26 * contributors may be used to endorse or promote products derived from
27 * this software without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 */
41
43
44#include "base/cprintf.hh"
45
46namespace gem5
47{
48
49void
50CacheBlk::insert(const Addr tag, const bool is_secure,
51 const int src_requestor_ID, const uint32_t task_ID,
52 const uint64_t partition_id)
53{
54 // Make sure that the block has been properly invalidated
55 assert(!isValid());
56
57 insert(tag, is_secure);
58
59 // Set source requestor ID
60 setSrcRequestorId(src_requestor_ID);
61
62 // Set task ID
63 setTaskId(task_ID);
64
65 // Set partition ID
66 setPartitionId(partition_id);
67
68 // Set insertion tick as current tick
70
71 // Insertion counts as a reference to the block
73}
74
75void
76CacheBlkPrintWrapper::print(std::ostream &os, int verbosity,
77 const std::string &prefix) const
78{
79 ccprintf(os, "%sblk %c%c%c%c\n", prefix,
80 blk->isValid() ? 'V' : '-',
81 blk->isSet(CacheBlk::WritableBit) ? 'E' : '-',
82 blk->isSet(CacheBlk::DirtyBit) ? 'M' : '-',
83 blk->isSecure() ? 'S' : '-');
84}
85
86} // namespace gem5
Definitions of a simple cache block class.
void print(std::ostream &o, int verbosity=0, const std::string &prefix="") const
Definition cache_blk.cc:76
@ WritableBit
write permission
Definition cache_blk.hh:81
@ DirtyBit
dirty (modified)
Definition cache_blk.hh:88
void insert(const Addr tag, const bool is_secure, const int src_requestor_ID, const uint32_t task_ID, const uint64_t partition_id)
Set member variables when a block insertion occurs.
Definition cache_blk.cc:50
bool isSet(unsigned bits) const
Checks the given coherence bits are set.
Definition cache_blk.hh:242
void setTaskId(const uint32_t task_id)
Set the task id value.
Definition cache_blk.hh:472
void setTickInserted()
Set the current tick as this block's insertion tick.
Definition cache_blk.hh:485
void increaseRefCount()
Get the number of references to this block since insertion.
Definition cache_blk.hh:300
void setPartitionId(const uint64_t partitionId)
Setter for _partitionId.
Definition cache_blk.hh:479
void setSrcRequestorId(const uint32_t id)
Set the source requestor id.
Definition cache_blk.hh:475
Addr tag
The entry's tag.
virtual bool isValid() const
Checks if the entry is valid.
bool isSecure() const
Check if this block holds data from the secure memory space.
Bitfield< 17 > os
Definition misc.hh:838
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147
void ccprintf(cp::Print &print)
Definition cprintf.hh:130

Generated on Tue Jun 18 2024 16:24:04 for gem5 by doxygen 1.11.0