On Thu, Apr 28, 2016 at 11:22 AM, Yulia Koval <vaalfr...@gmail.com> wrote:
> Thank you,
> Here is the repost.
>
> Update TARGET_FUNCTION_INCOMING_ARG documentation
>
>     On x86, interrupt handlers are only called by processors which push
>     interrupt data onto stack at the address where the normal return address
>     is.  Since interrupt handlers must access interrupt data via pointers so
>     that they can update interrupt data, the pointer argument is passed as
>     "argument pointer - word".
>
>     TARGET_FUNCTION_INCOMING_ARG defines how callee sees its argument.
>     Normally it returns REG, NULL, or CONST_INT.  This patch adds arbitrary
>     address computation based on hard register, which can be forced into a
>     register, to the list.
>
>     When copying an incoming argument onto stack, assign_parm_setup_stack
>     has:
>
>     if (argument in memory)
>       copy argument in memory to stack
>     else
>       move argument to stack
>
>     Since an arbitrary address computation may be passed as an argument, we
>     change it to:
>
>     if (argument in memory)
>       copy argument in memory to stack
>     else
>       {
>         if (argument isn't in register)
>           force argument into a register
>         move argument to stack
>       }
>
>         * function.c (assign_parm_setup_stack): Force source into a
>         register if needed.
>         * target.def (function_incoming_arg): Update documentation to
>         allow arbitrary address computation based on hard register.
>         * doc/tm.texi: Regenerated.
>
>
> Br,
> Yulia
>

You also need to update

DEFHOOK
(function_incoming_arg,
 "Define this hook if the target machine has ``register windows'', so\n\
that the register in which a function sees an arguments is not\n\
necessarily the same as the one in which the caller passed the\n\
argument.\n\
\n\
.....

in target.def.

-- 
H.J.

Reply via email to