From 8996f960dcf03271c5c0dbd3e3ef8adbf6157b87 Mon Sep 17 00:00:00 2001 From: devdl11 Date: Wed, 25 May 2022 09:53:00 +0200 Subject: [PATCH] Add specific header and extra version --- bootloader/slots/userland_header.cpp | 6 +++++- bootloader/slots/userland_header.h | 4 ++++ ion/src/device/bootloader/platform_info.cpp | 7 ++++++- ion/src/device/shared/drivers/bldata.h | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/bootloader/slots/userland_header.cpp b/bootloader/slots/userland_header.cpp index d05c55a5a..aa3f0ae42 100644 --- a/bootloader/slots/userland_header.cpp +++ b/bootloader/slots/userland_header.cpp @@ -39,7 +39,11 @@ const size_t UserlandHeader::storageSize() const { } const bool UserlandHeader::hasUpsilonExtras() const { - return m_upsilonExtraMagicFooter == UpsilonMagic; + return m_upsilonExtraMagicHeader == UpsilonExtraMagic && m_upsilonExtraMagicFooter == UpsilonExtraMagic; +} + +const uint16_t UserlandHeader::getExtraVersion() const { + return m_extraVersion; } const void (*UserlandHeader::upsilonRecoveryBootFunction() const)() { diff --git a/bootloader/slots/userland_header.h b/bootloader/slots/userland_header.h index abead1378..7b0591555 100644 --- a/bootloader/slots/userland_header.h +++ b/bootloader/slots/userland_header.h @@ -19,6 +19,7 @@ public: const size_t storageSize() const; const bool hasUpsilonExtras() const; const void (*upsilonRecoveryBootFunction() const)(); + const uint16_t getExtraVersion() const; private: @@ -26,6 +27,7 @@ private: constexpr static uint32_t Magic = 0xDEC0EDFE; constexpr static uint32_t OmegaMagic = 0xEFBEADDE; constexpr static uint32_t UpsilonMagic = 0x55707369; + constexpr static uint32_t UpsilonExtraMagic = 0xaa7073ff; uint32_t m_header; const char m_expectedEpsilonVersion[8]; void * m_storageAddressRAM; @@ -45,7 +47,9 @@ private: const char m_UpsilonVersion[16]; uint32_t m_osType; uint32_t m_upsilonMagicFooter; + uint32_t m_upsilonExtraMagicHeader; const void (*m_recoveryAddress)(); + uint16_t m_extraVersion; uint32_t m_upsilonExtraMagicFooter; }; diff --git a/ion/src/device/bootloader/platform_info.cpp b/ion/src/device/bootloader/platform_info.cpp index 26d48865e..8d174399b 100644 --- a/ion/src/device/bootloader/platform_info.cpp +++ b/ion/src/device/bootloader/platform_info.cpp @@ -76,8 +76,10 @@ public: m_UpsilonVersion{UPSILON_VERSION}, m_osType(OSType), m_upsilonMagicFooter(UpsilonMagic), + m_upsilonExtraMagicHeader(UpsilonExtraMagic), m_recoveryAddress(((uint32_t)&_recovery_boot_start) + 1), - m_upsilonExtraMagicFooter(UpsilonMagic) { } + m_extraVersion(1), + m_upsilonExtraMagicFooter(UpsilonExtraMagic) { } const char * omegaVersion() const { assert(m_storageAddressRAM != nullptr); @@ -114,6 +116,7 @@ private: constexpr static uint32_t OmegaMagic = 0xEFBEADDE; constexpr static uint32_t UpsilonMagic = 0x55707369; constexpr static uint32_t OSType = 0x79827178; + constexpr static uint32_t UpsilonExtraMagic = 0xaa7073ff; uint32_t m_header; const char m_expectedEpsilonVersion[8]; void * m_storageAddressRAM; @@ -133,7 +136,9 @@ private: const char m_UpsilonVersion[16]; uint32_t m_osType; uint32_t m_upsilonMagicFooter; + uint32_t m_upsilonExtraMagicHeader; uint32_t m_recoveryAddress; + uint16_t m_extraVersion; uint32_t m_upsilonExtraMagicFooter; }; diff --git a/ion/src/device/shared/drivers/bldata.h b/ion/src/device/shared/drivers/bldata.h index 58716a2f6..d315a4fbe 100644 --- a/ion/src/device/shared/drivers/bldata.h +++ b/ion/src/device/shared/drivers/bldata.h @@ -21,4 +21,4 @@ namespace Device uint32_t m_footer; }; } -} \ No newline at end of file +}