Copyright Digital Equipment Corp. All rights reserved.

Description

   This macro pushes a 64-bit argument for a 64-bit call. The macro
   $SETUP_CALL64 must be used before you can use $PUSH_ARG64.

   Arguments will be read as aligned quadwords. That is, $PUSH_ARG64
   4(R0) will read the quadword at 4(R0), and push the quadword. Any
   indexed operations will be done in quadword mode.

   To push a longword value from memory as a quadword, first move it
   into a register with a longword instruction, and then use $PUSH_
   ARG64 on the register. Similarly, to push a quadword value that
   you know is not aligned, move it to a temporary register first,
   and then use $PUSH_ARG64.

   If the call contains more than six arguments on OpenVMS Alpha or
   eight arguments on OpenVMS I64, this macro checks for SP or AP
   references in the argument.

   If the call contains more than six arguments on OpenVMS Alpha or
   eight arguments on OpenVMS I64, SP references are not allowed,
   and AP references are allowed only if the inline option is used.

   Note that $PUSH_ARG64 cannot be in conditional code. $PUSH_
   ARG64 updates several symbols, such as the remaining argument
   count. Attempting to write code that branches around a $PUSH_
   ARG64 in the middle of a $SETUP_CALL64/$CALL64 sequence will not
   work properly.