Mercurial > pub > dyncall > dyncall
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. */ |