Note: This is only the case for the RISC-V board that uses a different memory map than regular 64 bits platforms
Saving an image on X64 with the memory map layout for 64-bits:
# define ConfWordSize 8
# define CodeZoneInitialAddress 0x320000000 // "12.5GB";
# define NewSpaceInitialAddress 0x360000000 // "13.5GB";
# define OldSpaceInitialAddress 0x10000000000 // "1024GB";
# define PermSpaceInitialAddress 0x20000000000 // "2048GB";
# define StackPagesInitialAddress 0x300000000 // "12GB";
And then loading it with a different memory map:
# define ConfWordSize 4
# define CodeZoneInitialAddress 0x10000000 // "(256 MB)"
# define NewSpaceInitialAddress 0x20000000 // "(512 MB)";
# define OldSpaceInitialAddress 0x40000000 // "(1024 MB)";
# define PermSpaceInitialAddress 0x80000000 // "(2048 MB)";
# define StackPagesInitialAddress 0x0F000000 // "(240 MB)";
Breaks the swizzleObj as it checks for a greater address than the PermSpaceInitialAddress. It is always true if the new memory map is smaller and then it never swizzles the pointers.
Potential idea for fix: The image should store the address of the permanent space start at save time (or the entire memory map) and the swizzle needs that as argument at load time.
Saving an image on X64 with the memory map layout for 64-bits:
And then loading it with a different memory map:
Breaks the
swizzleObjas it checks for a greater address than thePermSpaceInitialAddress. It is always true if the new memory map is smaller and then it never swizzles the pointers.Potential idea for fix: The image should store the address of the permanent space start at save time (or the entire memory map) and the swizzle needs that as argument at load time.