title: :lower16, :upper16 for aarch64; absolute address into register;
body: <p>I need to put a 32-bit absolute address into a register on AArch64.  (e.g. an MMIO address, not PC-relative).</p>
  
  <p>On ARM32 it was possible to use <code>lower16</code> &amp; <code>upper16</code> to load an address into a register</p>
  
  <pre><code>movw    r0, #:lower16:my_addr
  movt    r0, #:upper16:my_addr
  </code></pre>
  
  <p>Is there a way to do similar thing on AArch64 by using <code>movk</code>?</p>
  
  <p><strong>If the code is relocated, I still want the same absolute address,</strong> so <code>adr</code> is not suitable.</p>
  
  <p><code>ldr</code> from a nearby literal pool would work, but I'd rather avoid that.</p>