gem5  v21.1.0.2
SubBlock.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
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;
9  * redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution;
12  * neither the name of the copyright holders nor the names of its
13  * contributors may be used to endorse or promote products derived from
14  * this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
30 
31 #include "base/stl_helpers.hh"
32 
33 namespace gem5
34 {
35 
36 namespace ruby
37 {
38 
39 using stl_helpers::operator<<;
40 
42 {
43  m_address = addr;
44  resize(size);
45  for (int i = 0; i < size; i++) {
46  setByte(i, 0);
47  }
48 }
49 
50 void
52 {
53  int size = getSize();
54  assert(size > 0);
55  int offset = getOffset(m_address);
56  for (int i = 0; i < size; i++) {
57  this->setByte(i, data.getByte(offset + i));
58  }
59 }
60 
61 void
63 {
64  int size = getSize();
65  assert(size > 0);
66  int offset = getOffset(m_address);
67  for (int i = 0; i < size; i++) {
68  // This will detect crossing a cache line boundary
69  data.setByte(offset + i, this->getByte(i));
70  }
71 }
72 
73 void
74 SubBlock::print(std::ostream& out) const
75 {
76  out << "[" << m_address << ", " << getSize() << ", " << m_data << "]";
77 }
78 
79 } // namespace ruby
80 } // namespace gem5
gem5::ruby::SubBlock::m_address
Addr m_address
Definition: SubBlock.hh:75
gem5::ruby::SubBlock::m_data
std::vector< uint8_t > m_data
Definition: SubBlock.hh:76
data
const char data[]
Definition: circlebuf.test.cc:48
gem5::ruby::DataBlock::getByte
uint8_t getByte(int whichByte) const
Definition: DataBlock.hh:111
gem5::ruby::SubBlock::getByte
uint8_t getByte(int offset) const
Definition: SubBlock.hh:56
gem5::ArmISA::i
Bitfield< 7 > i
Definition: misc_types.hh:66
gem5::ruby::SubBlock::internalMergeTo
void internalMergeTo(DataBlock &data) const
Definition: SubBlock.cc:62
gem5::ruby::SubBlock::SubBlock
SubBlock()
Definition: SubBlock.hh:47
gem5::ruby::SubBlock::resize
void resize(int size)
Definition: SubBlock.hh:55
gem5::ruby::getOffset
Addr getOffset(Addr addr)
Definition: Address.cc:54
gem5::ruby::SubBlock::internalMergeFrom
void internalMergeFrom(const DataBlock &data)
Definition: SubBlock.cc:51
gem5::ArmISA::offset
Bitfield< 23, 0 > offset
Definition: types.hh:144
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::ruby::SubBlock::print
void print(std::ostream &out) const
Definition: SubBlock.cc:74
gem5::ruby::DataBlock
Definition: DataBlock.hh:60
gem5::ruby::SubBlock::setByte
void setByte(int offset, uint8_t data)
Definition: SubBlock.hh:57
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: decoder.cc:40
stl_helpers.hh
gem5::ruby::SubBlock::getSize
int getSize() const
Definition: SubBlock.hh:54
SubBlock.hh
gem5::X86ISA::addr
Bitfield< 3 > addr
Definition: types.hh:84

Generated on Tue Sep 21 2021 12:25:40 for gem5 by doxygen 1.8.17