package: busybox: disable mips16 on hard-float
authorChuanhong Guo <gch981213@gmail.com>
Thu, 15 Aug 2024 08:04:30 +0000 (16:04 +0800)
committerChuanhong Guo <gch981213@gmail.com>
Tue, 17 Sep 2024 13:46:20 +0000 (21:46 +0800)
commit118f26e6cb8b21f90f41d2ea557783b59e75e1d5
tree8bc6acf21520ef5a856d97b6a03265e4af6fcda0
parent6d89aa29878a93c744e8c752a68bc05d41252cfc
package: busybox: disable mips16 on hard-float

The busybox built with mips16 enabled has broken seq command.
Disassembling shows that the call to hard-float strtod in mips16
code is generated without the __call_stub_fp:
```
   0x00406d6f <+118>:   lw      v0,32(sp)
   0x00406d71 <+120>:   sll     s0,2
   0x00406d73 <+122>:   addu    s0,v0,s0
   0x00406d75 <+124>:   lw      a0,-4(s0)
   0x00406d79 <+128>:   jal     0x44ebc1 <strtod@mips16plt>
   0x00406d7d <+132>:   addiu   a1,sp,84
   0x00406d7f <+134>:   sw      v0,64(sp)
   0x00406d81 <+136>:   lw      v0,0(s1)
   0x00406d83 <+138>:   sw      v1,68(sp)
```

As a result, strtod returns the result in float point registers
while the calling mips16 code expect the result in v0/v1.

Disable mips16 on hard-float targets for now. The built .ipk goes
from 213316 bytes to 251419 bytes.

Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
package/utils/busybox/Makefile