comparison doc/manual/callconvs/callconv_ppc32.tex @ 238:05181c5a6edd

- ppc32 doc tweak
author Tassilo Philipp
date Tue, 02 May 2017 03:00:55 +0200
parents f1fc1c836baf
children cde7b1f3b8f2
comparison
equal deleted inserted replaced
237:98503af08916 238:05181c5a6edd
47 Name & Brief description\\ 47 Name & Brief description\\
48 \hline 48 \hline
49 {\bf gpr0} & scratch\\ 49 {\bf gpr0} & scratch\\
50 {\bf gpr1} & stack pointer\\ 50 {\bf gpr1} & stack pointer\\
51 {\bf gpr2} & scratch\\ 51 {\bf gpr2} & scratch\\
52 {\bf gpr3} & return value, parameter 0 if integer or pointer\\ 52 {\bf gpr3,gpr4} & return value, parameter 0 and 1 for integer or pointer\\
53 {\bf gpr4-gpr10} & return value, parameter 1-7 for integer or pointer parameters\\ 53 {\bf gpr5-gpr10} & parameter 2-7 for integer or pointer parameters\\
54 {\bf gpr11} & permanent\\ 54 {\bf gpr11} & permanent\\
55 {\bf gpr12} & branch target for dynamic code generation\\ 55 {\bf gpr12} & branch target for dynamic code generation\\
56 {\bf gpr13-31} & permanent\\ 56 {\bf gpr13-31} & permanent\\
57 {\bf fpr0} & scratch\\ 57 {\bf fpr0} & scratch\\
58 {\bf fpr1-fpr13} & parameter 0-12 for floating point (always double precision)\\ 58 {\bf fpr1} & floating point return value, floating point parameter 0 (always double precision)\\
59 {\bf fpr2-fpr13} & floating point parameters 1-12 (always double precision)\\
59 {\bf fpr14-fpr31} & permanent\\ 60 {\bf fpr14-fpr31} & permanent\\
60 {\bf v0-v1} & scratch\\ 61 {\bf v0-v1} & scratch\\
61 {\bf v2-v13} & vector parameters\\ 62 {\bf v2-v13} & vector parameters\\
62 {\bf v14-v19} & scratch\\ 63 {\bf v14-v19} & scratch\\
63 {\bf v20-v31} & permanent\\ 64 {\bf v20-v31} & permanent\\
71 \end{table} 72 \end{table}
72 73
73 \paragraph{Parameter passing} 74 \paragraph{Parameter passing}
74 75
75 \begin{itemize} 76 \begin{itemize}
76 \item stack parameter order: right-to-left@@@? 77 \item stack parameter order: right-to-left
77 \item caller cleans up the stack@@@? 78 \item caller cleans up the stack
78 \item the first 8 integer parameters are passed in registers gpr3-gpr10 79 \item the first 8 integer parameters are passed in registers gpr3-gpr10
79 \item the first 12 floating point parameters are passed in registers fpr1-fpr13 80 \item the first 12 floating point parameters are passed in registers fpr1-fpr13
80 \item if a float parameter is passed via a register, gpr registers are skipped for subsequent integer parameters (based on the size of 81 \item if a float parameter is passed via a register, gpr registers are skipped for subsequent integer parameters (based on the size of
81 the float - 1 register for single precision and 2 for double precision floating point values) 82 the float - 1 register for single precision and 2 for double precision floating point values)
82 \item the caller pushes subsequent parameters onto the stack 83 \item the caller pushes subsequent parameters onto the stack