diff options
author | Bernhard Schommer <bernhardschommer@gmail.com> | 2015-03-31 10:46:16 +0200 |
---|---|---|
committer | Bernhard Schommer <bernhardschommer@gmail.com> | 2015-03-31 10:46:16 +0200 |
commit | 035047ca6c4f62c8481ffa9e4cc0783ea6a1b784 (patch) | |
tree | 28f0e627f194d334b8f6872f783188e580451ee5 /runtime/ia32 | |
parent | b3de120011683866149ac2a9fbd0da38e2eef96c (diff) | |
parent | 47a6b116069cff9c71466bde1fd87d0775ec9175 (diff) | |
download | compcert-035047ca6c4f62c8481ffa9e4cc0783ea6a1b784.tar.gz compcert-035047ca6c4f62c8481ffa9e4cc0783ea6a1b784.zip |
Merge branch 'master' into dwarf
Conflicts:
Makefile
driver/Driver.ml
Diffstat (limited to 'runtime/ia32')
-rw-r--r-- | runtime/ia32/vararg.S | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/runtime/ia32/vararg.S b/runtime/ia32/vararg.S index ec55a454..78666c70 100644 --- a/runtime/ia32/vararg.S +++ b/runtime/ia32/vararg.S @@ -67,3 +67,15 @@ FUNCTION(__compcert_va_float64) movl %edx, 0(%ecx) ret ENDFUNCTION(__compcert_va_float64) + +FUNCTION(__compcert_va_composite) + movl 4(%esp), %ecx // %ecx = ap parameter + movl 8(%esp), %edx // %edx = size of composite in bytes + movl 0(%ecx), %eax // %eax = current argument pointer + leal 3(%eax, %edx), %edx // advance by size + andl $0xfffffffc, %edx // and round up to multiple of 4 + movl %edx, 0(%ecx) // update argument pointer + ret +ENDFUNCTION(__compcert_va_composite) + + |