diff options
author | Marcin Bukat <marcin.bukat@gmail.com> | 2014-11-18 23:27:26 +0100 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2014-11-18 23:30:44 +0100 |
commit | cd04a5f1aadc8e2ec4e787f5ba4cc8c38a579314 (patch) | |
tree | 63e9f095451aeba0139152c8742d0af67413690a /utils/regtools | |
parent | 794169a18f644eea32de20b26646381137545e2d (diff) | |
download | rockbox-cd04a5f1aadc8e2ec4e787f5ba4cc8c38a579314.tar.gz rockbox-cd04a5f1aadc8e2ec4e787f5ba4cc8c38a579314.zip |
hwstub/qeditor: add support for atomic read/writes
The current code assumed that READ/WRITE would produce atomic read/writes for
8/16/32-bit words, which in turned put assumption on the memcpy function.
Since some memcpy implementation do not always guarantee such strong assumption,
introduce two new operation READ/WRITE_ATOMIC which provide the necessary
tools to do correct read and write to register in a single memory access.
Change-Id: I37451bd5057bb0dcaf5a800d8aef8791c792a090
Diffstat (limited to 'utils/regtools')
-rw-r--r-- | utils/regtools/qeditor/backend.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/utils/regtools/qeditor/backend.cpp b/utils/regtools/qeditor/backend.cpp index 570ae4d01f..e73263d30a 100644 --- a/utils/regtools/qeditor/backend.cpp +++ b/utils/regtools/qeditor/backend.cpp | |||
@@ -266,7 +266,7 @@ bool HWStubDevice::ReadMem(soc_addr_t addr, size_t length, void *buffer) | |||
266 | { | 266 | { |
267 | if(!m_hwdev) | 267 | if(!m_hwdev) |
268 | return false; | 268 | return false; |
269 | int ret = hwstub_rw_mem(m_hwdev, 1, addr, buffer, length); | 269 | int ret = hwstub_rw_mem_atomic(m_hwdev, 1, addr, buffer, length); |
270 | return ret >= 0 && (size_t)ret == length; | 270 | return ret >= 0 && (size_t)ret == length; |
271 | } | 271 | } |
272 | 272 | ||
@@ -274,7 +274,7 @@ bool HWStubDevice::WriteMem(soc_addr_t addr, size_t length, void *buffer) | |||
274 | { | 274 | { |
275 | if(!m_hwdev) | 275 | if(!m_hwdev) |
276 | return false; | 276 | return false; |
277 | int ret = hwstub_rw_mem(m_hwdev, 0, addr, buffer, length); | 277 | int ret = hwstub_rw_mem_atomic(m_hwdev, 0, addr, buffer, length); |
278 | return ret >= 0 && (size_t)ret == length; | 278 | return ret >= 0 && (size_t)ret == length; |
279 | } | 279 | } |
280 | 280 | ||