Skip to content

Swizzling uses wrong memory map #955

Description

@QDucasse

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions