summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko2021-04-24 11:54:50 +0200
committerDenys Vlasenko2021-04-24 11:54:50 +0200
commitd005c9f4c7e6afc812612e98fdd120b9b4051c04 (patch)
tree134c2b75f3e0e2a15daab6503c7568d46940580e
parent972e29881a4aecde7987ee4947e609e75894fb8c (diff)
downloadbusybox-d005c9f4c7e6afc812612e98fdd120b9b4051c04.zip
busybox-d005c9f4c7e6afc812612e98fdd120b9b4051c04.tar.gz
libbb.h: inline byteswaps
function old new delta recv_and_process_peer_pkt 2173 2245 +72 machtime_dg 97 114 +17 machtime_stream 29 45 +16 fmt_time_bernstein_25 132 139 +7 aesgcm_GHASH 183 184 +1 dumpleases_main 519 516 -3 __bswap_32 3 - -3 udhcp_run_script 743 739 -4 tls_xread_record 634 630 -4 select_lease_time 56 52 -4 rdate_main 260 256 -4 get_prefix 327 323 -4 udhcp_listen_socket 185 180 -5 sha1_process_block64 361 356 -5 sendping6 81 76 -5 sendping4 107 102 -5 read32 27 22 -5 ll_proto_a2n 112 107 -5 bb_lookup_port 102 97 -5 udhcpc_main 2615 2609 -6 tftpd_main 579 573 -6 str2sockaddr 558 552 -6 GMULT 136 130 -6 sha1_end 73 66 -7 ntpd_main 1361 1354 -7 ntohl 7 - -7 inet_addr_match 93 86 -7 htonl 7 - -7 do_iplink 1259 1252 -7 do_add_or_delete 1138 1131 -7 create_and_bind_or_die 117 110 -7 bind_for_passive_mode 124 117 -7 xconnect_ftpdata 98 90 -8 rpm_getint 118 110 -8 read_leases 304 296 -8 read_config 216 208 -8 udhcp_send_kernel_packet 336 327 -9 udhcp_recv_kernel_packet 143 134 -9 sha256_process_block64 451 442 -9 d6_send_kernel_packet_from_client_data_ifindex 275 266 -9 write_leases 215 205 -10 wget_main 2518 2508 -10 udhcpd_main 1528 1518 -10 tftp_protocol 2019 2009 -10 ftpd_main 2159 2149 -10 des_crypt 1318 1308 -10 send_ACK 138 127 -11 ipaddr_modify 1618 1607 -11 udhcp_str2optset 650 638 -12 init_d6_packet 115 103 -12 xwrite_encrypted 512 499 -13 tls_handshake 2060 2047 -13 pscan_main 607 594 -13 perform_d6_release 240 227 -13 ip_port_str 135 122 -13 handle_incoming_and_exit 2230 2217 -13 INET_setroute 751 737 -14 traceroute_init 1153 1137 -16 nc_main 1055 1039 -16 udhcp_init_header 92 75 -17 volume_id_probe_hfs_hfsplus 512 494 -18 send_offer 455 435 -20 do_lzo_decompress 507 487 -20 add_client_options 229 209 -20 ipcalc_main 554 533 -21 dhcprelay_main 966 943 -23 change_listen_mode 345 321 -24 send_packet 188 162 -26 static.xmalloc_optname_optval 709 681 -28 rpm_gettags 447 419 -28 machtime 28 - -28 catcher 299 270 -29 sfp_to_d 78 48 -30 reread_config_file 917 886 -31 lfp_to_d 84 51 -33 udhcp_recv_raw_packet 594 559 -35 nbdclient_main 1182 1145 -37 d_to_lfp 137 100 -37 lzo_compress 567 529 -38 d6_recv_raw_packet 299 254 -45 d_to_sfp 133 85 -48 d6_send_raw_packet_from_client_data_ifindex 427 379 -48 common_ping_main 1935 1887 -48 udhcp_send_raw_packet 467 416 -51 zcip_main 1219 1160 -59 udhcpc6_main 2636 2568 -68 do_lzo_compress 327 258 -69 send_arp_request 201 129 -72 common_traceroute_main 1699 1621 -78 arpping 523 437 -86 arping_main 1597 1481 -116 print_tunnel 678 550 -128 dnsd_main 1304 1164 -140 parse_args 1370 1169 -201 ------------------------------------------------------------------------------ (add/remove: 0/6 grow/shrink: 5/85 up/down: 113/-2246) Total: -2133 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--include/libbb.h22
-rw-r--r--include/platform.h1
-rw-r--r--networking/ntpd.c2
3 files changed, 24 insertions, 1 deletions
diff --git a/include/libbb.h b/include/libbb.h
index 37732e1..03f9c35 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -192,6 +192,28 @@ int klogctl(int type, char *b, int len);
# define BUFSIZ 4096
#endif
+#if __GNUC_PREREQ(5,0)
+/* Since musl is apparently unable to get it right and would use
+ * a function call to a single-instruction function of "bswap %eax",
+ * reroute to gcc builtins:
+ */
+# undef bswap_16
+# undef bswap_32
+# undef bswap_64
+# define bswap_16(x) __builtin_bswap16(x)
+# define bswap_32(x) __builtin_bswap32(x)
+# define bswap_64(x) __builtin_bswap64(x)
+# if BB_LITTLE_ENDIAN
+# undef ntohs
+# undef htons
+# undef ntohl
+# undef htonl
+# define ntohs(x) __builtin_bswap16(x)
+# define htons(x) __builtin_bswap16(x)
+# define ntohl(x) __builtin_bswap32(x)
+# define htonl(x) __builtin_bswap32(x)
+# endif
+#endif
/* Busybox does not use threads, we can speed up stdio. */
#ifdef HAVE_UNLOCKED_STDIO
diff --git a/include/platform.h b/include/platform.h
index 387b6f5..4633b25 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -195,6 +195,7 @@
#endif
#if ULONG_MAX > 0xffffffff
+/* inline 64-bit bswap only on 64-bit arches */
# define bb_bswap_64(x) bswap_64(x)
#endif
diff --git a/networking/ntpd.c b/networking/ntpd.c
index 8cf8830..6bf6c4e 100644
--- a/networking/ntpd.c
+++ b/networking/ntpd.c
@@ -577,7 +577,7 @@ sfp_to_d(s_fixedpt_t sfp)
return ret;
}
#if ENABLE_FEATURE_NTPD_SERVER
-static void
+static NOINLINE void
d_to_lfp(l_fixedpt_t *lfp, double d)
{
uint32_t intl;