as: P2align

 
 7.69 '.p2align[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
 ================================================
 
 Pad the location counter (in the current subsection) to a particular
 storage boundary.  The first expression (which must be absolute) is the
 number of low-order zero bits the location counter must have after
 advancement.  For example '.p2align 3' advances the location counter
 until it a multiple of 8.  If the location counter is already a multiple
 of 8, no change is needed.
 
    The second expression (also absolute) gives the fill value to be
 stored in the padding bytes.  It (and the comma) may be omitted.  If it
 is omitted, the padding bytes are normally zero.  However, on most
 systems, if the section is marked as containing code and the fill value
 is omitted, the space is filled with no-op instructions.
 
    The third expression is also absolute, and is also optional.  If it
 is present, it is the maximum number of bytes that should be skipped by
 this alignment directive.  If doing the alignment would require skipping
 more bytes than the specified maximum, then the alignment is not done at
 all.  You can omit the fill value (the second argument) entirely by
 simply using two commas after the required alignment; this can be useful
 if you want the alignment to be filled with no-op instructions when
 appropriate.
 
    The '.p2alignw' and '.p2alignl' directives are variants of the
 '.p2align' directive.  The '.p2alignw' directive treats the fill pattern
 as a two byte word value.  The '.p2alignl' directives treats the fill
 pattern as a four byte longword value.  For example, '.p2alignw
 2,0x368d' will align to a multiple of 4.  If it skips two bytes, they
 will be filled in with the value 0x368d (the exact placement of the
 bytes depends upon the endianness of the processor).  If it skips 1 or 3
 bytes, the fill value is undefined.