as: Literal Position Directive

 
 9.54.5.5 literal_position
 .........................
 
 When using '--text-section-literals' to place literals inline in the
 section being assembled, the '.literal_position' directive can be used
 to mark a potential location for a literal pool.
 
          .literal_position
 
    The '.literal_position' directive is ignored when the
 '--text-section-literals' option is not used or when 'L32R' instructions
 use the absolute addressing mode.
 
    The assembler will automatically place text section literal pools
 before 'ENTRY' instructions, so the '.literal_position' directive is
 only needed to specify some other location for a literal pool.  You may
 need to add an explicit jump instruction to skip over an inline literal
 pool.
 
    For example, an interrupt vector does not begin with an 'ENTRY'
 instruction so the assembler will be unable to automatically find a good
 place to put a literal pool.  Moreover, the code for the interrupt
 vector must be at a specific starting address, so the literal pool
 cannot come before the start of the code.  The literal pool for the
 vector must be explicitly positioned in the middle of the vector (before
 any uses of the literals, due to the negative offsets used by
 PC-relative 'L32R' instructions).  The '.literal_position' directive can
 be used to do this.  In the following code, the literal for 'M' will
 automatically be aligned correctly and is placed after the unconditional
 jump.
 
          .global M
      code_start:
          j continue
          .literal_position
          .align 4
      continue:
          movi    a4, M