Skip to content

Commit

Permalink
Import x86-64-ABI revision 251
Browse files Browse the repository at this point in the history
  • Loading branch information
hjl-tools committed Apr 25, 2016
1 parent e2c52e7 commit 81e55af
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
6 changes: 6 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
2016-02-29 Michael Matz <matz@suse.de>

* low-level-sys-info.tex (Register pass classification,
Variable argument list, Register save area): Mention %al,
not %rax to avoid confusion.

2015-11-19 H.J. Lu <hongjiu.lu@intel.com>

* object-files.tex (Relocation Types): Replace \multicolumn{3}
Expand Down
10 changes: 4 additions & 6 deletions low-level-sys-info.tex
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,7 @@ \subsection{Parameter Passing}
preserved, nor is it used to pass arguments. Making this register
available as scratch register means that code in the PLT need not
spill any registers when computing the address to which control
needs to be transferred. \RAX is used to indicate the number of
needs to be transferred. \reg{al} is used to indicate the number of
vector arguments passed to a function requiring a variable number of
arguments. \reg{r10} is used for passing a function's static chain
pointer.}.
Expand Down Expand Up @@ -2073,14 +2073,12 @@ \subsection{Variable Argument Lists}
registers. Portable C programs must use the header file
\code{<stdarg.h>} in order to handle variable argument lists.

When a function taking variable-arguments is called, \RAX\index{\RAX}
When a function taking variable-arguments is called, \reg{al}\index{\RAX}
must be set to the total number of floating point parameters passed to
the function in vector registers.%
\footnote{This implies that the only legal values for \RAX when
\footnote{This implies that the only legal values for \reg{al} when
calling a function with variable-argument lists are 0 to 8
(inclusive).}
%%% XXX: Really only floating pointer parameters?
%%% XXX: Use %al or %rax?

When \texttt{__m256} or \texttt{__m512} is passed as variable-argument,
it should always be passed on stack. Only named \texttt{__m256} and
Expand Down Expand Up @@ -2148,7 +2146,7 @@ \subsubsection{The Register Save Area\index{register save area}}
arguments already are exhausted the argument registers entirely.},
the register save area may be omitted entirely.

The prologue should use \RAX to avoid unnecessarily saving XMM
The prologue should use \reg{al} to avoid unnecessarily saving XMM
registers. This is especially important for integer only programs to
prevent the initialization of the XMM unit.

Expand Down

0 comments on commit 81e55af

Please sign in to comment.