packet.cc (11256:65db40192591) | packet.cc (11284:b3926db25371) |
---|---|
1/* 2 * Copyright (c) 2011-2015 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 --- 66 unchanged lines hidden (view full) --- 75 * device, with no restrictions on alignment. */ 76 { SET3(IsRead, IsRequest, NeedsResponse), ReadResp, "ReadReq" }, 77 /* ReadResp */ 78 { SET3(IsRead, IsResponse, HasData), InvalidCmd, "ReadResp" }, 79 /* ReadRespWithInvalidate */ 80 { SET4(IsRead, IsResponse, HasData, IsInvalidate), 81 InvalidCmd, "ReadRespWithInvalidate" }, 82 /* WriteReq */ | 1/* 2 * Copyright (c) 2011-2015 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 --- 66 unchanged lines hidden (view full) --- 75 * device, with no restrictions on alignment. */ 76 { SET3(IsRead, IsRequest, NeedsResponse), ReadResp, "ReadReq" }, 77 /* ReadResp */ 78 { SET3(IsRead, IsResponse, HasData), InvalidCmd, "ReadResp" }, 79 /* ReadRespWithInvalidate */ 80 { SET4(IsRead, IsResponse, HasData, IsInvalidate), 81 InvalidCmd, "ReadRespWithInvalidate" }, 82 /* WriteReq */ |
83 { SET5(IsWrite, NeedsExclusive, IsRequest, NeedsResponse, HasData), | 83 { SET5(IsWrite, NeedsWritable, IsRequest, NeedsResponse, HasData), |
84 WriteResp, "WriteReq" }, 85 /* WriteResp */ | 84 WriteResp, "WriteReq" }, 85 /* WriteResp */ |
86 { SET3(IsWrite, NeedsExclusive, IsResponse), InvalidCmd, "WriteResp" }, | 86 { SET3(IsWrite, NeedsWritable, IsResponse), InvalidCmd, "WriteResp" }, |
87 /* WritebackDirty */ 88 { SET4(IsWrite, IsRequest, IsEviction, HasData), 89 InvalidCmd, "WritebackDirty" }, 90 /* WritebackClean - This allows the upstream cache to writeback a 91 * line to the downstream cache without it being considered 92 * dirty. */ 93 { SET4(IsWrite, IsRequest, IsEviction, HasData), 94 InvalidCmd, "WritebackClean" }, --- 7 unchanged lines hidden (view full) --- 102 HardPFResp, "HardPFReq" }, 103 /* SoftPFResp */ 104 { SET4(IsRead, IsResponse, IsSWPrefetch, HasData), 105 InvalidCmd, "SoftPFResp" }, 106 /* HardPFResp */ 107 { SET4(IsRead, IsResponse, IsHWPrefetch, HasData), 108 InvalidCmd, "HardPFResp" }, 109 /* WriteLineReq */ | 87 /* WritebackDirty */ 88 { SET4(IsWrite, IsRequest, IsEviction, HasData), 89 InvalidCmd, "WritebackDirty" }, 90 /* WritebackClean - This allows the upstream cache to writeback a 91 * line to the downstream cache without it being considered 92 * dirty. */ 93 { SET4(IsWrite, IsRequest, IsEviction, HasData), 94 InvalidCmd, "WritebackClean" }, --- 7 unchanged lines hidden (view full) --- 102 HardPFResp, "HardPFReq" }, 103 /* SoftPFResp */ 104 { SET4(IsRead, IsResponse, IsSWPrefetch, HasData), 105 InvalidCmd, "SoftPFResp" }, 106 /* HardPFResp */ 107 { SET4(IsRead, IsResponse, IsHWPrefetch, HasData), 108 InvalidCmd, "HardPFResp" }, 109 /* WriteLineReq */ |
110 { SET5(IsWrite, NeedsExclusive, IsRequest, NeedsResponse, HasData), | 110 { SET5(IsWrite, NeedsWritable, IsRequest, NeedsResponse, HasData), |
111 WriteResp, "WriteLineReq" }, 112 /* UpgradeReq */ | 111 WriteResp, "WriteLineReq" }, 112 /* UpgradeReq */ |
113 { SET5(IsInvalidate, NeedsExclusive, IsUpgrade, IsRequest, NeedsResponse), | 113 { SET5(IsInvalidate, NeedsWritable, IsUpgrade, IsRequest, NeedsResponse), |
114 UpgradeResp, "UpgradeReq" }, 115 /* SCUpgradeReq: response could be UpgradeResp or UpgradeFailResp */ | 114 UpgradeResp, "UpgradeReq" }, 115 /* SCUpgradeReq: response could be UpgradeResp or UpgradeFailResp */ |
116 { SET6(IsInvalidate, NeedsExclusive, IsUpgrade, IsLlsc, | 116 { SET6(IsInvalidate, NeedsWritable, IsUpgrade, IsLlsc, |
117 IsRequest, NeedsResponse), 118 UpgradeResp, "SCUpgradeReq" }, 119 /* UpgradeResp */ | 117 IsRequest, NeedsResponse), 118 UpgradeResp, "SCUpgradeReq" }, 119 /* UpgradeResp */ |
120 { SET3(NeedsExclusive, IsUpgrade, IsResponse), | 120 { SET3(NeedsWritable, IsUpgrade, IsResponse), |
121 InvalidCmd, "UpgradeResp" }, 122 /* SCUpgradeFailReq: generates UpgradeFailResp but still gets the data */ | 121 InvalidCmd, "UpgradeResp" }, 122 /* SCUpgradeFailReq: generates UpgradeFailResp but still gets the data */ |
123 { SET6(IsRead, NeedsExclusive, IsInvalidate, | 123 { SET6(IsRead, NeedsWritable, IsInvalidate, |
124 IsLlsc, IsRequest, NeedsResponse), 125 UpgradeFailResp, "SCUpgradeFailReq" }, 126 /* UpgradeFailResp - Behaves like a ReadExReq, but notifies an SC 127 * that it has failed, acquires line as Dirty*/ | 124 IsLlsc, IsRequest, NeedsResponse), 125 UpgradeFailResp, "SCUpgradeFailReq" }, 126 /* UpgradeFailResp - Behaves like a ReadExReq, but notifies an SC 127 * that it has failed, acquires line as Dirty*/ |
128 { SET4(IsRead, NeedsExclusive, IsResponse, HasData), | 128 { SET4(IsRead, NeedsWritable, IsResponse, HasData), |
129 InvalidCmd, "UpgradeFailResp" }, 130 /* ReadExReq - Read issues by a cache, always cache-line aligned, 131 * and the response is guaranteed to be writeable (exclusive or 132 * even modified) */ | 129 InvalidCmd, "UpgradeFailResp" }, 130 /* ReadExReq - Read issues by a cache, always cache-line aligned, 131 * and the response is guaranteed to be writeable (exclusive or 132 * even modified) */ |
133 { SET5(IsRead, NeedsExclusive, IsInvalidate, IsRequest, NeedsResponse), | 133 { SET5(IsRead, NeedsWritable, IsInvalidate, IsRequest, NeedsResponse), |
134 ReadExResp, "ReadExReq" }, 135 /* ReadExResp - Response matching a read exclusive, as we check 136 * the need for exclusive also on responses */ | 134 ReadExResp, "ReadExReq" }, 135 /* ReadExResp - Response matching a read exclusive, as we check 136 * the need for exclusive also on responses */ |
137 { SET4(IsRead, NeedsExclusive, IsResponse, HasData), | 137 { SET4(IsRead, NeedsWritable, IsResponse, HasData), |
138 InvalidCmd, "ReadExResp" }, 139 /* ReadCleanReq - Read issued by a cache, always cache-line 140 * aligned, and the response is guaranteed to not contain dirty data 141 * (exclusive or shared).*/ 142 { SET3(IsRead, IsRequest, NeedsResponse), ReadResp, "ReadCleanReq" }, 143 /* ReadSharedReq - Read issued by a cache, always cache-line 144 * aligned, response is shared, possibly exclusive, owned or even 145 * modified. */ 146 { SET3(IsRead, IsRequest, NeedsResponse), ReadResp, "ReadSharedReq" }, 147 /* LoadLockedReq: note that we use plain ReadResp as response, so that 148 * we can also use ReadRespWithInvalidate when needed */ 149 { SET4(IsRead, IsLlsc, IsRequest, NeedsResponse), 150 ReadResp, "LoadLockedReq" }, 151 /* StoreCondReq */ | 138 InvalidCmd, "ReadExResp" }, 139 /* ReadCleanReq - Read issued by a cache, always cache-line 140 * aligned, and the response is guaranteed to not contain dirty data 141 * (exclusive or shared).*/ 142 { SET3(IsRead, IsRequest, NeedsResponse), ReadResp, "ReadCleanReq" }, 143 /* ReadSharedReq - Read issued by a cache, always cache-line 144 * aligned, response is shared, possibly exclusive, owned or even 145 * modified. */ 146 { SET3(IsRead, IsRequest, NeedsResponse), ReadResp, "ReadSharedReq" }, 147 /* LoadLockedReq: note that we use plain ReadResp as response, so that 148 * we can also use ReadRespWithInvalidate when needed */ 149 { SET4(IsRead, IsLlsc, IsRequest, NeedsResponse), 150 ReadResp, "LoadLockedReq" }, 151 /* StoreCondReq */ |
152 { SET6(IsWrite, NeedsExclusive, IsLlsc, | 152 { SET6(IsWrite, NeedsWritable, IsLlsc, |
153 IsRequest, NeedsResponse, HasData), 154 StoreCondResp, "StoreCondReq" }, 155 /* StoreCondFailReq: generates failing StoreCondResp */ | 153 IsRequest, NeedsResponse, HasData), 154 StoreCondResp, "StoreCondReq" }, 155 /* StoreCondFailReq: generates failing StoreCondResp */ |
156 { SET6(IsWrite, NeedsExclusive, IsLlsc, | 156 { SET6(IsWrite, NeedsWritable, IsLlsc, |
157 IsRequest, NeedsResponse, HasData), 158 StoreCondResp, "StoreCondFailReq" }, 159 /* StoreCondResp */ | 157 IsRequest, NeedsResponse, HasData), 158 StoreCondResp, "StoreCondFailReq" }, 159 /* StoreCondResp */ |
160 { SET4(IsWrite, NeedsExclusive, IsLlsc, IsResponse), | 160 { SET4(IsWrite, NeedsWritable, IsLlsc, IsResponse), |
161 InvalidCmd, "StoreCondResp" }, 162 /* SwapReq -- for Swap ldstub type operations */ | 161 InvalidCmd, "StoreCondResp" }, 162 /* SwapReq -- for Swap ldstub type operations */ |
163 { SET6(IsRead, IsWrite, NeedsExclusive, IsRequest, HasData, NeedsResponse), | 163 { SET6(IsRead, IsWrite, NeedsWritable, IsRequest, HasData, NeedsResponse), |
164 SwapResp, "SwapReq" }, 165 /* SwapResp -- for Swap ldstub type operations */ | 164 SwapResp, "SwapReq" }, 165 /* SwapResp -- for Swap ldstub type operations */ |
166 { SET5(IsRead, IsWrite, NeedsExclusive, IsResponse, HasData), | 166 { SET5(IsRead, IsWrite, NeedsWritable, IsResponse, HasData), |
167 InvalidCmd, "SwapResp" }, 168 /* IntReq -- for interrupts */ 169 { SET4(IsWrite, IsRequest, NeedsResponse, HasData), 170 MessageResp, "MessageReq" }, 171 /* IntResp -- for interrupts */ 172 { SET2(IsWrite, IsResponse), InvalidCmd, "MessageResp" }, 173 /* MemFenceReq -- for synchronization requests */ 174 {SET2(IsRequest, NeedsResponse), MemFenceResp, "MemFenceReq"}, --- 5 unchanged lines hidden (view full) --- 180 { SET2(IsResponse, IsError), InvalidCmd, "BadAddressError" }, 181 /* FunctionalReadError */ 182 { SET3(IsRead, IsResponse, IsError), InvalidCmd, "FunctionalReadError" }, 183 /* FunctionalWriteError */ 184 { SET3(IsWrite, IsResponse, IsError), InvalidCmd, "FunctionalWriteError" }, 185 /* PrintReq */ 186 { SET2(IsRequest, IsPrint), InvalidCmd, "PrintReq" }, 187 /* Flush Request */ | 167 InvalidCmd, "SwapResp" }, 168 /* IntReq -- for interrupts */ 169 { SET4(IsWrite, IsRequest, NeedsResponse, HasData), 170 MessageResp, "MessageReq" }, 171 /* IntResp -- for interrupts */ 172 { SET2(IsWrite, IsResponse), InvalidCmd, "MessageResp" }, 173 /* MemFenceReq -- for synchronization requests */ 174 {SET2(IsRequest, NeedsResponse), MemFenceResp, "MemFenceReq"}, --- 5 unchanged lines hidden (view full) --- 180 { SET2(IsResponse, IsError), InvalidCmd, "BadAddressError" }, 181 /* FunctionalReadError */ 182 { SET3(IsRead, IsResponse, IsError), InvalidCmd, "FunctionalReadError" }, 183 /* FunctionalWriteError */ 184 { SET3(IsWrite, IsResponse, IsError), InvalidCmd, "FunctionalWriteError" }, 185 /* PrintReq */ 186 { SET2(IsRequest, IsPrint), InvalidCmd, "PrintReq" }, 187 /* Flush Request */ |
188 { SET3(IsRequest, IsFlush, NeedsExclusive), InvalidCmd, "FlushReq" }, | 188 { SET3(IsRequest, IsFlush, NeedsWritable), InvalidCmd, "FlushReq" }, |
189 /* Invalidation Request */ | 189 /* Invalidation Request */ |
190 { SET4(IsInvalidate, IsRequest, NeedsExclusive, NeedsResponse), | 190 { SET4(IsInvalidate, IsRequest, NeedsWritable, NeedsResponse), |
191 InvalidateResp, "InvalidateReq" }, 192 /* Invalidation Response */ | 191 InvalidateResp, "InvalidateReq" }, 192 /* Invalidation Response */ |
193 { SET3(IsInvalidate, IsResponse, NeedsExclusive), | 193 { SET3(IsInvalidate, IsResponse, NeedsWritable), |
194 InvalidCmd, "InvalidateResp" } 195}; 196 197bool 198Packet::checkFunctional(Printable *obj, Addr addr, bool is_secure, int size, 199 uint8_t *_data) 200{ 201 Addr func_start = getAddr(); --- 210 unchanged lines hidden --- | 194 InvalidCmd, "InvalidateResp" } 195}; 196 197bool 198Packet::checkFunctional(Printable *obj, Addr addr, bool is_secure, int size, 199 uint8_t *_data) 200{ 201 Addr func_start = getAddr(); --- 210 unchanged lines hidden --- |