comparison dyncall/dyncall_call_mips_n64.S @ 305:b104c5beec8b

- softfloat support for mips64/n64 abi
author Tassilo Philipp
date Wed, 23 May 2018 11:41:34 +0200
parents d55f9d508074
children
comparison
equal deleted inserted replaced
304:6869d834a847 305:b104c5beec8b
84 84
85 /* load registers */ 85 /* load registers */
86 86
87 /* locals: */ 87 /* locals: */
88 /* $13 = register data */ 88 /* $13 = register data */
89 /* $14 = useDouble flags */
90 move $13, $5 89 move $13, $5
91 ld $14, 128($13)
92 90
93 /* load integer parameter registers */ 91 /* load parameter registers (only ints on hardfloat) */
94 92
95 ld $4 , 0($13) 93 ld $4 , 0($13)
96 ld $5 , 8($13) 94 ld $5 , 8($13)
97 ld $6 ,16($13) 95 ld $6 ,16($13)
98 ld $7 ,24($13) 96 ld $7 ,24($13)
99 ld $8 ,32($13) 97 ld $8 ,32($13)
100 ld $9 ,40($13) 98 ld $9 ,40($13)
101 ld $10,48($13) 99 ld $10,48($13)
102 ld $11,56($13) 100 ld $11,56($13)
101
102 #if defined(DC__ABI_HARDFLOAT)
103
104 /* $14 = useDouble flags */
105 ld $14, 128($13)
103 106
104 /* load float-or-double floating pointer parameter registers 107 /* load float-or-double floating pointer parameter registers
105 a 64-bit bitmask given at byte offset 128 of regdata indicates 108 a 64-bit bitmask given at byte offset 128 of regdata indicates
106 if loading a float (bit cleared) or double (bit set), starting 109 if loading a float (bit cleared) or double (bit set), starting
107 at bit position 0 in bitmask. 110 at bit position 0 in bitmask.
170 l.s $f19,120($13) 173 l.s $f19,120($13)
171 j .fregend 174 j .fregend
172 .d7: 175 .d7:
173 l.d $f19,120($13) 176 l.d $f19,120($13)
174 177
178 #endif /* DC__ABI_HARDFLOAT) */
179
175 .fregend: 180 .fregend:
176 181
177 /* jump-and-link to register $25 */ 182 /* jump-and-link to register $25 */
178 183
179 jal $31, $25 184 jal $31, $25