Correct floating point arg support with msabi<->sysv adapter
While msabi and sysv do agree what to do with floating point args for 4 floating point args (pass in xmm0-4), they dont agree what to do with mixing msabi will choose the register corresponding with argument position. so if you have (int foo, float bar), bar will use xmm1 sysv instead will choose the first register available in the group. so with the previous example, you instead have bar using xmm0 the simple solution is to simply prohibit mixed args for now. maybe someday we could support mixing, but that's probably overkill (best use a struct at that point)
This commit is contained in:
parent
62c3b4b8e3
commit
5ae4470466
|
@ -143,7 +143,7 @@ section .text
|
|||
; departX are msabi functions that call a sysv function and returns its result.
|
||||
; arriveX are sysv functions that call a msabi function and returns its result.
|
||||
; The function is passed as a hidden parameter in rax, and should take X pointer or integer type arguments.
|
||||
; The function passed may also have at most 4 floating point arguments.
|
||||
; If the function contains no pointer or integer type arguments, then it may instead have, at most, 4 floating point arguments.
|
||||
|
||||
depart0:
|
||||
START_DEPART
|
||||
|
|
Loading…
Reference in New Issue