17 __attribute__((section( \
184#include "../tests/TestIsolator.h"
207 static Result ResetAndClear()
209 testIsolator_.GetStateForCurrentTest()->memory_.clear();
214 static Result Write(uint32_t address, uint32_t size, uint8_t* buffer)
217 uint32_t adjusted_addr = (address) & (uint32_t)(~0xff);
219 uint32_t total_bytes = adjusted_addr + size;
220 AdaptToSize(total_bytes);
222 uint8_t* dest = testIsolator_.GetStateForCurrentTest()->memory_.data();
223 std::copy(&buffer[adjusted_addr],
224 &buffer[adjusted_addr + size],
225 &dest[adjusted_addr]);
229 static Result Erase(uint32_t start_addr, uint32_t end_addr)
231 uint32_t adjusted_start_addr = (start_addr) & (uint32_t)(~0xff);
232 uint32_t adjusted_end_addr = (end_addr) & (uint32_t)(~0xff);
235 assert(adjusted_start_addr < kMaxAdjustedAddr);
236 assert(adjusted_end_addr < kMaxAdjustedAddr);
240 AdaptToSize(adjusted_end_addr);
241 uint8_t* buff = testIsolator_.GetStateForCurrentTest()->memory_.data();
243 std::fill(&buff[adjusted_start_addr], &buff[adjusted_end_addr], 0xff);
249 static void*
GetData(uint32_t offset = 0)
251 assert(offset < kMaxAdjustedAddr);
252 AdaptToSize(offset + 1);
253 return (
void*)(testIsolator_.GetStateForCurrentTest()->memory_.data()
261 static size_t GetCurrentSize()
263 return testIsolator_.GetStateForCurrentTest()->memory_.size();
268 static void AdaptToSize(uint32_t required_bytes)
270 if(testIsolator_.GetStateForCurrentTest()->memory_.size()
272 testIsolator_.GetStateForCurrentTest()->memory_.resize(
273 required_bytes, 0x00);
275 static constexpr uint32_t kMaxAdjustedAddr = 0x800000;
279 std::vector<uint8_t> memory_;
281 static TestIsolator<QSPIState> testIsolator_;