summaryrefslogtreecommitdiff
path: root/utils/regtools/qeditor/backend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/regtools/qeditor/backend.cpp')
-rw-r--r--utils/regtools/qeditor/backend.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/utils/regtools/qeditor/backend.cpp b/utils/regtools/qeditor/backend.cpp
index 75c504a6f6..fa107ec26c 100644
--- a/utils/regtools/qeditor/backend.cpp
+++ b/utils/regtools/qeditor/backend.cpp
@@ -1,6 +1,7 @@
1#include <QFile> 1#include <QFile>
2#include <QTextStream> 2#include <QTextStream>
3#include <QDebug> 3#include <QDebug>
4#include <QFileInfo>
4#include "backend.h" 5#include "backend.h"
5 6
6/** 7/**
@@ -99,9 +100,38 @@ bool FileIoBackend::Reload()
99 else if(ok) 100 else if(ok)
100 m_map[key] = val; 101 m_map[key] = val;
101 } 102 }
103
104 m_readonly = !QFileInfo(file).isWritable();
105 m_dirty = false;
106 return true;
107}
108
109bool FileIoBackend::WriteRegister(const QString& name, soc_word_t value)
110{
111 m_dirty = true;
112 m_map[name] = value;
102 return true; 113 return true;
103} 114}
104 115
116bool FileIoBackend::Commit()
117{
118 if(!m_dirty)
119 return true;
120 QFile file(m_filename);
121 if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))
122 return false;
123 QTextStream out(&file);
124 out << "HW = " << m_soc << "\n";
125 QMapIterator< QString, soc_word_t > it(m_map);
126 while(it.hasNext())
127 {
128 it.next();
129 out << it.key() << " = " << it.value() << "\n";
130 }
131 out.flush();
132 return file.flush();
133}
134
105#ifdef HAVE_HWSTUB 135#ifdef HAVE_HWSTUB
106/** 136/**
107 * HWStubDevice 137 * HWStubDevice
@@ -195,6 +225,14 @@ bool HWStubDevice::ReadMem(soc_addr_t addr, size_t length, void *buffer)
195 return ret >= 0 && (size_t)ret == length; 225 return ret >= 0 && (size_t)ret == length;
196} 226}
197 227
228bool HWStubDevice::WriteMem(soc_addr_t addr, size_t length, void *buffer)
229{
230 if(!m_hwdev)
231 return false;
232 int ret = hwstub_rw_mem(m_hwdev, 0, addr, buffer, length);
233 return ret >= 0 && (size_t)ret == length;
234}
235
198bool HWStubDevice::IsValid() 236bool HWStubDevice::IsValid()
199{ 237{
200 return m_valid; 238 return m_valid;
@@ -243,6 +281,11 @@ bool HWStubIoBackend::ReadRegister(soc_addr_t addr, soc_word_t& value)
243 return m_dev->ReadMem(addr, sizeof(value), &value); 281 return m_dev->ReadMem(addr, sizeof(value), &value);
244} 282}
245 283
284bool HWStubIoBackend:: WriteRegister(soc_addr_t addr, soc_word_t value)
285{
286 return m_dev->WriteMem(addr, sizeof(value), &value);
287}
288
246bool HWStubIoBackend::Reload() 289bool HWStubIoBackend::Reload()
247{ 290{
248 return true; 291 return true;