Why Doesn’t FVP Initialize Unused Memory to Zero (e.g., 0xcfdfdfdfdfdfdfcf)?

I have a question about FVP (Fixed Virtual Platform) and its memory initialization behavior. Specifically, I noticed that unused memory in FVP is not set to 0, but instead contains non-zero values like 0xcfdfdfdfdfdfdfcf.

For example, when reading a non-used memory area in FVP, the values appear as non-zero by default. This behavior can lead to issues, such as:

  • If the OS running on FVP does not explicitly clear the .bss section, global variables in the OS could end up initialized with these non-zero default values.
  • This, in turn, may cause unexpected behavior or bugs during execution.

Given that FVP operates in a virtualized memory environment, I’m wondering why it doesn’t simply initialize all memory to zero. Is there a specific design rationale or technical limitation for this behavior?