comparison doc/manual/callconvs/callconv_mips32.tex @ 305:b104c5beec8b

- softfloat support for mips64/n64 abi
author Tassilo Philipp
date Wed, 23 May 2018 11:41:34 +0200
parents 6869d834a847
children a1fcb3e02270
comparison
equal deleted inserted replaced
304:6869d834a847 305:b104c5beec8b
148 148
149 \begin{itemize} 149 \begin{itemize}
150 \item Stack grows down 150 \item Stack grows down
151 \item Stack parameter order: right-to-left 151 \item Stack parameter order: right-to-left
152 \item Caller cleans up the stack 152 \item Caller cleans up the stack
153 \item Caller is required to always leave a 16-byte spill area for \$a0-\$a3 at the and of {\bf its} frame, to be used and spilled to by the callee, if needed 153 \item Caller is required to always leave a 16-byte spill area for \$a0-\$a3 at the end of {\bf its} frame, to be used and spilled to by the callee, if needed
154 \item The different stack areas (local data, register save area, parameter area) are each aligned to 8 bytes 154 \item The different stack areas (local data, register save area, parameter area) are each aligned to 8 bytes
155 \item generally, first four 32bit arguments are passed in registers \$a0-\$a3, respectively (only on hard-float targets: see below for exceptions if first arg is a float) 155 \item generally, first four 32bit arguments are passed in registers \$a0-\$a3, respectively (only on hard-float targets: see below for exceptions if first arg is a float)
156 \item subsequent parameters are passed vie the stack 156 \item subsequent parameters are passed vie the stack
157 \item 64-bit params passed via registers are passed using either two registers (starting at an even register number, skipping an odd one if necessary), or via the stack using an 8-byte alignment 157 \item 64-bit params passed via registers are passed using either two registers (starting at an even register number, skipping an odd one if necessary), or via the stack using an 8-byte alignment
158 \item only on hard-float targets: if the very first call argument is a float, up to 2 floats or doubles can be passed via \$f12 and \$f14, respectively, for first and second argument 158 \item only on hard-float targets: if the very first call argument is a float, up to 2 floats or doubles can be passed via \$f12 and \$f14, respectively, for first and second argument