atomic.hh (13652:45d94ac03a27) atomic.hh (13954:2f400a5f2627)
1/*
2 * Copyright (c) 2012-2013, 2015, 2018 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

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

190 void switchOut() override;
191 void takeOverFrom(BaseCPU *oldCPU) override;
192
193 void verifyMemoryMode() const override;
194
195 void activateContext(ThreadID thread_num) override;
196 void suspendContext(ThreadID thread_num) override;
197
1/*
2 * Copyright (c) 2012-2013, 2015, 2018 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

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

190 void switchOut() override;
191 void takeOverFrom(BaseCPU *oldCPU) override;
192
193 void verifyMemoryMode() const override;
194
195 void activateContext(ThreadID thread_num) override;
196 void suspendContext(ThreadID thread_num) override;
197
198 /**
199 * Helper function used to set up the request for a single fragment of a
200 * memory access.
201 *
202 * Takes care of setting up the appropriate byte-enable mask for the
203 * fragment, given the mask for the entire memory access.
204 *
205 * @param req Pointer to the Request object to populate.
206 * @param frag_addr Start address of the fragment.
207 * @param size Total size of the memory access in bytes.
208 * @param flags Request flags.
209 * @param byte_enable Byte-enable mask for the entire memory access.
210 * @param[out] frag_size Fragment size.
211 * @param[in,out] size_left Size left to be processed in the memory access.
212 * @return True if the byte-enable mask for the fragment is not all-false.
213 */
214 bool genMemFragmentRequest(const RequestPtr& req, Addr frag_addr,
215 int size, Request::Flags flags,
216 const std::vector<bool>& byte_enable,
217 int& frag_size, int& size_left) const;
218
198 Fault readMem(Addr addr, uint8_t *data, unsigned size,
219 Fault readMem(Addr addr, uint8_t *data, unsigned size,
199 Request::Flags flags) override;
220 Request::Flags flags,
221 const std::vector<bool>& byteEnable = std::vector<bool>())
222 override;
200
201 Fault writeMem(uint8_t *data, unsigned size,
223
224 Fault writeMem(uint8_t *data, unsigned size,
202 Addr addr, Request::Flags flags, uint64_t *res) override;
225 Addr addr, Request::Flags flags, uint64_t *res,
226 const std::vector<bool>& byteEnable = std::vector<bool>())
227 override;
203
204 Fault amoMem(Addr addr, uint8_t* data, unsigned size,
205 Request::Flags flags, AtomicOpFunctor *amo_op) override;
206
207 void regProbePoints() override;
208
209 /**
210 * Print state of address in memory system via PrintReq (for
211 * debugging).
212 */
213 void printAddr(Addr a);
214};
215
216#endif // __CPU_SIMPLE_ATOMIC_HH__
228
229 Fault amoMem(Addr addr, uint8_t* data, unsigned size,
230 Request::Flags flags, AtomicOpFunctor *amo_op) override;
231
232 void regProbePoints() override;
233
234 /**
235 * Print state of address in memory system via PrintReq (for
236 * debugging).
237 */
238 void printAddr(Addr a);
239};
240
241#endif // __CPU_SIMPLE_ATOMIC_HH__