comparison dyncall/dyncall_call_arm32_arm_armhf.S @ 146:0ab08c1541f0

- fixed armhf ellipsis calls, were ignoring spill area - minor cleanups for consistency - todo update
author cslag
date Thu, 08 Sep 2016 23:00:45 +0200
parents 9bd3c5219505
children 12729fd52ab7
comparison
equal deleted inserted replaced
145:63892f03e493 146:0ab08c1541f0
4 Library: dyncall 4 Library: dyncall
5 File: dyncall/dyncall_call_arm32_arm_armhf.S 5 File: dyncall/dyncall_call_arm32_arm_armhf.S
6 Description: Call Kernel for ARM 32-bit ARM Architecture - Hard Float 6 Description: Call Kernel for ARM 32-bit ARM Architecture - Hard Float
7 License: 7 License:
8 8
9 Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>, 9 Copyright (c) 2007-2016 Daniel Adler <dadler@uni-goettingen.de>,
10 Tassilo Philipp <tphilipp@potion-studios.com> 10 Tassilo Philipp <tphilipp@potion-studios.com>
11 11
12 Permission to use, copy, modify, and distribute this software for any 12 Permission to use, copy, modify, and distribute this software for any
13 purpose with or without fee is hereby granted, provided that the above 13 purpose with or without fee is hereby granted, provided that the above
14 copyright notice and this permission notice appear in all copies. 14 copyright notice and this permission notice appear in all copies.
59 mov r5 , r1 /* r5 = 'args' (2nd argument is passed in r1). */ 59 mov r5 , r1 /* r5 = 'args' (2nd argument is passed in r1). */
60 60
61 /* Load 16 single-precision registers (= 8 double-precision registers). */ 61 /* Load 16 single-precision registers (= 8 double-precision registers). */
62 fldmiad r3, {d0-d7} 62 fldmiad r3, {d0-d7}
63 63
64 sub r2 , r2 , #16 /* skip spill area */ 64 /* nope, or varargs will not work: sub r2 , r2 , #16 /* skip spill area */
65 cmp r2, #0 65 cmp r2, #0
66 ble armhf_call 66 ble armhf_call
67 67
68 sub r13, r13, r2 68 sub r13, r13, r2
69 and r13, r13, #-8 /* align 8-byte. */ 69 and r13, r13, #-8 /* align 8-byte. */