Mercurial > pub > dyncall > dyncall
comparison dyncall/dyncall_call_mips_o32.h @ 302:d55f9d508074
- mips softfloat support for o32 callconv (calls and callbacks, little and big endian)
- cleanup of some mips files, removed unnecessary file, renamings..
- doc/manual cleanups, changelog entry
author | Tassilo Philipp |
---|---|
date | Mon, 21 May 2018 02:48:12 +0200 |
parents | f5577f6bf97a |
children |
comparison
equal
deleted
inserted
replaced
301:74948b02cfa0 | 302:d55f9d508074 |
---|---|
35 #endif | 35 #endif |
36 | 36 |
37 /* Call-kernel register data: | 37 /* Call-kernel register data: |
38 | 38 |
39 Details: | 39 Details: |
40 | |
40 The structure holds the argument data for transfering float/double arguments | 41 The structure holds the argument data for transfering float/double arguments |
41 via registers as well. | 42 via registers as well. |
42 The call-kernel implements loads two doubles, which involves four | 43 The call-kernel on hardfloat platforms implements loads two doubles, which |
43 32-bit floating pointer registers. | 44 involves four 32-bit floating pointer registers. It's unused for softfloat |
45 platforms. | |
46 | |
44 Float arguments map as following: | 47 Float arguments map as following: |
45 | 48 |
46 float argument 0 is at u[0][0] for little, u[0][1] for big endian and | 49 float argument 0 is at u[0][0] for little, u[0][1] for big endian and |
47 float argument 1 is at u[1][0] for little, u[1][1] for big endian of | 50 float argument 1 is at u[1][0] for little, u[1][1] for big endian of |
48 DCRegData_mips_o32 union. | 51 DCRegData_mips_o32 union. |
49 | 52 |
50 */ | 53 */ |
51 | 54 |
52 typedef struct DCRegData_mips_o32_ | 55 typedef struct |
53 { | 56 { |
57 #if defined(DC__ABI_HARDFLOAT) | |
54 union { | 58 union { |
55 double d; | 59 double d; |
56 float f[2]; | 60 float f[2]; |
57 } u[2]; | 61 } u[2]; |
62 #endif /* DC__ABI_HARDFLOAT */ | |
58 } DCRegData_mips_o32; | 63 } DCRegData_mips_o32; |
59 | 64 |
60 | 65 |
61 /* Call kernel. */ | 66 /* Call kernel. */ |
62 | 67 |