as: AArch64 Directives

 
 9.1.5 AArch64 Machine Directives
 --------------------------------
 
 '.arch NAME'
      Select the target architecture.  Valid values for NAME are the same
      as for the '-march' command-line option.
 
      Specifying '.arch' clears any previously selected architecture
      extensions.
 
 '.arch_extension NAME'
      Add or remove an architecture extension to the target architecture.
      Valid values for NAME are the same as those accepted as
      architectural extensions by the '-mcpu' command-line option.
 
      '.arch_extension' may be used multiple times to add or remove
      extensions incrementally to the architecture being compiled for.
 
 '.bss'
      This directive switches to the '.bss' section.
 
 '.cpu NAME'
      Set the target processor.  Valid values for NAME are the same as
      those accepted by the '-mcpu=' command-line option.
 
 '.dword EXPRESSIONS'
      The '.dword' directive produces 64 bit values.
 
 '.even'
      The '.even' directive aligns the output on the next even byte
      boundary.
 
 '.inst EXPRESSIONS'
      Inserts the expressions into the output as if they were
      instructions, rather than data.
 
 '.ltorg'
      This directive causes the current contents of the literal pool to
      be dumped into the current section (which is assumed to be the
      .text section) at the current location (aligned to a word
      boundary).  GAS maintains a separate literal pool for each section
      and each sub-section.  The '.ltorg' directive will only affect the
      literal pool of the current section and sub-section.  At the end of
      assembly all remaining, un-empty literal pools will automatically
      be dumped.
 
      Note - older versions of GAS would dump the current literal pool
      any time a section change occurred.  This is no longer done, since
      it prevents accurate control of the placement of literal pools.
 
 '.pool'
      This is a synonym for .ltorg.
 
 'NAME .req REGISTER NAME'
      This creates an alias for REGISTER NAME called NAME.  For example:
 
                   foo .req w0
 
      ip0, ip1, lr and fp are automatically defined to alias to X16, X17,
      X30 and X29 respectively.
 
 '.tlsdescadd'
      Emits a TLSDESC_ADD reloc on the next instruction.
 
 '.tlsdesccall'
      Emits a TLSDESC_CALL reloc on the next instruction.
 
 '.tlsdescldr'
      Emits a TLSDESC_LDR reloc on the next instruction.
 
 '.unreq ALIAS-NAME'
      This undefines a register alias which was previously defined using
      the 'req' directive.  For example:
 
                   foo .req w0
                   .unreq foo
 
      An error occurs if the name is undefined.  Note - this pseudo op
      can be used to delete builtin in register name aliases (eg 'w0').
      This should only be done if it is really necessary.
 
 '.variant_pcs SYMBOL'
      This directive marks SYMBOL referencing a function that may follow
      a variant procedure call standard with different register usage
      convention from the base procedure call standard.
 
 '.xword EXPRESSIONS'
      The '.xword' directive produces 64 bit values.  This is the same as
      the '.dword' directive.
 
 '.cfi_b_key_frame'
      The '.cfi_b_key_frame' directive inserts a 'B' character into the
      CIE corresponding to the current frame's FDE, meaning that its
      return address has been signed with the B-key.  If two frames are
      signed with differing keys then they will not share the same CIE.
      This information is intended to be used by the stack unwinder in
      order to properly authenticate return addresses.