diff options
author | Denys Vlasenko | 2021-04-24 11:54:50 +0200 |
---|---|---|
committer | Denys Vlasenko | 2021-04-24 11:54:50 +0200 |
commit | d005c9f4c7e6afc812612e98fdd120b9b4051c04 (patch) | |
tree | 134c2b75f3e0e2a15daab6503c7568d46940580e | |
parent | 972e29881a4aecde7987ee4947e609e75894fb8c (diff) | |
download | busybox-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.h | 22 | ||||
-rw-r--r-- | include/platform.h | 1 | ||||
-rw-r--r-- | networking/ntpd.c | 2 |
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; |