In GCC, the MEMORY command describes the location and size of blocks of memory in the target. The command must be used this way.
MEMORY 
  {
    name [(attr)] : ORIGIN = origin, LENGTH = len
    ...
  }
Now, I have a linker file used by the linker (a GCC based linker for Infineon Tricore microcontrollers, tricore-ld) defining a RAM memory section this way:
MEMORY 
  {
    ram       (w!xp): org = 0x70000000, len = 32k
    ...
  }
Could you explain what 'p' means in (w!xp)? What does 'p' mean in general?
 
    