diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/regtools/qeditor/backend.cpp | 25 | ||||
-rw-r--r-- | utils/regtools/qeditor/backend.h | 6 |
2 files changed, 25 insertions, 6 deletions
diff --git a/utils/regtools/qeditor/backend.cpp b/utils/regtools/qeditor/backend.cpp index c2db1f2a3e..e9d7941ab1 100644 --- a/utils/regtools/qeditor/backend.cpp +++ b/utils/regtools/qeditor/backend.cpp | |||
@@ -587,10 +587,17 @@ bool BackendHelper::ReadRegisterField(const QString& dev, const QString& reg, | |||
587 | return true; | 587 | return true; |
588 | } | 588 | } |
589 | 589 | ||
590 | bool BackendHelper::DumpAllRegisters(const QString& filename) | 590 | bool BackendHelper::DumpAllRegisters(const QString& filename, bool ignore_errors) |
591 | { | 591 | { |
592 | FileIoBackend b(filename, QString::fromStdString(m_soc.GetSoc().name)); | 592 | FileIoBackend b(filename, QString::fromStdString(m_soc.GetSoc().name)); |
593 | BackendHelper bh(&b, m_soc); | 593 | bool ret = DumpAllRegisters(&b, ignore_errors); |
594 | return ret && b.Commit(); | ||
595 | } | ||
596 | |||
597 | bool BackendHelper::DumpAllRegisters(IoBackend *backend, bool ignore_errors) | ||
598 | { | ||
599 | BackendHelper bh(backend, m_soc); | ||
600 | bool ret = true; | ||
594 | for(size_t i = 0; i < m_soc.GetSoc().dev.size(); i++) | 601 | for(size_t i = 0; i < m_soc.GetSoc().dev.size(); i++) |
595 | { | 602 | { |
596 | const soc_dev_t& dev = m_soc.GetSoc().dev[i]; | 603 | const soc_dev_t& dev = m_soc.GetSoc().dev[i]; |
@@ -605,12 +612,20 @@ bool BackendHelper::DumpAllRegisters(const QString& filename) | |||
605 | QString regname = QString::fromStdString(reg.addr[l].name); | 612 | QString regname = QString::fromStdString(reg.addr[l].name); |
606 | soc_word_t val; | 613 | soc_word_t val; |
607 | if(!ReadRegister(devname, regname, val)) | 614 | if(!ReadRegister(devname, regname, val)) |
608 | return false; | 615 | { |
616 | ret = false; | ||
617 | if(!ignore_errors) | ||
618 | return false; | ||
619 | } | ||
609 | if(!bh.WriteRegister(devname, regname, val)) | 620 | if(!bh.WriteRegister(devname, regname, val)) |
610 | return false; | 621 | { |
622 | ret = false; | ||
623 | if(!ignore_errors) | ||
624 | return false; | ||
625 | } | ||
611 | } | 626 | } |
612 | } | 627 | } |
613 | } | 628 | } |
614 | } | 629 | } |
615 | return b.Commit(); | 630 | return ret; |
616 | } | 631 | } |
diff --git a/utils/regtools/qeditor/backend.h b/utils/regtools/qeditor/backend.h index c8adbc474f..b2f53c9ed5 100644 --- a/utils/regtools/qeditor/backend.h +++ b/utils/regtools/qeditor/backend.h | |||
@@ -363,7 +363,11 @@ public: | |||
363 | bool GetRegRef(const SocDevRef& dev, const QString& reg, SocRegRef& ref); | 363 | bool GetRegRef(const SocDevRef& dev, const QString& reg, SocRegRef& ref); |
364 | bool GetFieldRef(const SocRegRef& reg, const QString& field, SocFieldRef& ref); | 364 | bool GetFieldRef(const SocRegRef& reg, const QString& field, SocFieldRef& ref); |
365 | bool GetRegisterAddress(const QString& dev, const QString& reg, soc_addr_t& addr); | 365 | bool GetRegisterAddress(const QString& dev, const QString& reg, soc_addr_t& addr); |
366 | bool DumpAllRegisters(const QString& filename); | 366 | /* NOTE: does not commit writes to the backend |
367 | * if ignore_errors is true, the dump will continue even on errors, and the | ||
368 | * function will return false if one or more errors occured */ | ||
369 | bool DumpAllRegisters(IoBackend *backend, bool ignore_errors = true); | ||
370 | bool DumpAllRegisters(const QString& filename, bool ignore_errors = true); | ||
367 | 371 | ||
368 | private: | 372 | private: |
369 | IoBackend *m_io_backend; | 373 | IoBackend *m_io_backend; |