title: How can a process access memory mapped IO address not belonging to it's virtual address space?
body: <p>I was reading the OS theory in which I found that a process have it's virtual address space (loosely using technique base and limit register for sake of simplicity) But it can't access  any other addresses. But in embedded systems we can use placement new  or reinterpret_cast (C++) to access memory mapped IO address'es, but how that can be possible if we can't access any other address except process's virtual address space?</p>
  
  <pre><code>class ControlReg { 
  public:
  bool ready() const { return readyBit; }
  private:
  volatile unsigned readyBit :1;
  };
  
  ControlReg *pcr = reinterpret_cast&lt;ControlReg*&gt;(0xFFFF0000); // address 0xFFFF0000 is still virtual or absolute physical mapped address?
  </code></pre>
  
  <p>Is there some instruction that makes possible for process to access any address? . I'm confused I guess, can anyone please help me view things clearly?</p>
  
  <p>Thanks</p>