optimize 16- and 32-bit moves

function                                             old     new   delta
udhcpd_main                                         1239    1257     +18
udhcp_add_simple_option                               93      92      -1
buffer_read_le_u32                                    19      18      -1
unpack_gz_stream_with_info                           526     520      -6
dnsd_main                                           1470    1463      -7
udhcp_run_script                                    1208    1186     -22
send_ACK                                             255     229     -26
arping_main                                         1661    1623     -38
send_offer                                           470     428     -42
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/8 up/down: 18/-143)          Total: -125 bytes
This commit is contained in:
Denis Vlasenko
2008-12-08 22:56:18 +00:00
parent d1a84a2880
commit efb545b9bd
13 changed files with 97 additions and 77 deletions

View File

@@ -224,9 +224,8 @@ int FAST_FUNC add_simple_option(uint8_t *optionptr, uint8_t code, uint32_t data)
option[OPT_LEN] = len;
if (BB_BIG_ENDIAN)
data <<= 8 * (4 - len);
/* This memcpy is for processors which can't
* handle a simple unaligned 32-bit assignment */
memcpy(&option[OPT_DATA], &data, 4);
/* Assignment is unaligned! */
move_to_unaligned32(&option[OPT_DATA], data);
return add_option_string(optionptr, option);
}
}