Add specific header and extra version

This commit is contained in:
devdl11
2022-05-25 09:53:00 +02:00
parent cbec2e5883
commit 8996f960dc
4 changed files with 16 additions and 3 deletions

View File

@@ -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)() {

View File

@@ -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;
};

View File

@@ -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;
};

View File

@@ -21,4 +21,4 @@ namespace Device
uint32_t m_footer;
};
}
}
}