Search code examples
armcpucpu-cacheaddressing-mode

difference between Virtual address and Modified virtual address in ARM architecture


I am new in arm and arm instruction set. in the document of ARM-Cortex A8 i have seen some commands like cache flush accept input address as MVA ( modified virtual address). there is any difference between "Modified Virtual Address" and "Virtual Address" and if yes how can convert an 32-bit long virtual address to MVA.


Solution

  • Modified virtual addresses are a consequence of using the Fast Context Switch Extension. The Modified Virtual Address includes a 7-bit Process ID in the upper portion of a 32-bit address with the requirement that those bits of the virtual address were zero. This allows TLB tags and cache virtual tags to use a 32-bit address that is not extended (tagged) with the Process ID (address space ID).

    For a little more information see the Boston University blog post "Tagged TLBs and Context Switching" or Gilles Chanteperdrix and Richard Cochran's paper "The ARM Fast Context Switch Extension for Linux" (PDF).