summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/bloblist.c11
-rw-r--r--include/bloblist.h10
2 files changed, 14 insertions, 7 deletions
diff --git a/common/bloblist.c b/common/bloblist.c
index 11d6422b695..2008ab4d25c 100644
--- a/common/bloblist.c
+++ b/common/bloblist.c
@@ -576,7 +576,16 @@ int bloblist_maybe_init(void)
int bloblist_check_reg_conv(ulong rfdt, ulong rzero, ulong rsig)
{
- if (rzero || rsig != (BLOBLIST_MAGIC | BLOBLIST_REGCONV_VER) ||
+ ulong version = BLOBLIST_REGCONV_VER;
+ ulong sigval;
+
+ sigval = (IS_ENABLED(CONFIG_64BIT)) ?
+ ((BLOBLIST_MAGIC & ((1UL << BLOBLIST_REGCONV_SHIFT_64) - 1)) |
+ ((version & BLOBLIST_REGCONV_MASK) << BLOBLIST_REGCONV_SHIFT_64)) :
+ ((BLOBLIST_MAGIC & ((1UL << BLOBLIST_REGCONV_SHIFT_32) - 1)) |
+ ((version & BLOBLIST_REGCONV_MASK) << BLOBLIST_REGCONV_SHIFT_32));
+
+ if (rzero || rsig != sigval ||
rfdt != (ulong)bloblist_find(BLOBLISTT_CONTROL_FDT, 0)) {
gd->bloblist = NULL; /* Reset the gd bloblist pointer */
return -EIO;
diff --git a/include/bloblist.h b/include/bloblist.h
index 7fbdd622bcf..b0706b5637d 100644
--- a/include/bloblist.h
+++ b/include/bloblist.h
@@ -78,12 +78,10 @@ enum {
BLOBLIST_VERSION = 1,
BLOBLIST_MAGIC = 0x4a0fb10b,
- /*
- * FIXME:
- * Register convention version should be placed into a higher byte
- * https://github.com/FirmwareHandoff/firmware_handoff/issues/32
- */
- BLOBLIST_REGCONV_VER = 1 << 24,
+ BLOBLIST_REGCONV_SHIFT_64 = 32,
+ BLOBLIST_REGCONV_SHIFT_32 = 24,
+ BLOBLIST_REGCONV_MASK = 0xff,
+ BLOBLIST_REGCONV_VER = 1,
BLOBLIST_BLOB_ALIGN_LOG2 = 3,
BLOBLIST_BLOB_ALIGN = 1 << BLOBLIST_BLOB_ALIGN_LOG2,