I’ve just noticed that if I call Map_MapMemory() and Map_UnMapMemory() over the same physical address multiple times, Map_MapMemory() returns the same virtual address most of the times.
This is the expexted behavior. Map_MapMemory() will return a different address, if there was any other operation called which directly or indirectly (de)allocated chunks of system memory.
The system heap grows and shrinks in larger chunks, therefore malloc() and free() can trigger this sometimes.