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:
CasualPokePlayer 2022-11-16 15:26:31 -08:00
parent 62c3b4b8e3
commit 5ae4470466
1 changed files with 1 additions and 1 deletions

View File

@ -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