memword_t
fill_count = -(uintptr_t)addr & (sizeof(memword_t) - 1);
keep_mask = ~(memword_t)0U << (fill_count * 8);
keep_mask = ~(memword_t)0U >> (fill_count * 8);
dstp = (memword_t *)((uintptr_t)addr & -sizeof(memword_t));
len += (uintptr_t)addr & (sizeof(memword_t) - 1);
dstp = (memword_t *)ep;
for (edstp = dstp + len / sizeof(memword_t); dstp != edstp; dstp++)
len &= sizeof(memword_t)-1;
keep_mask |= ~(memword_t)0U >> (len * 8);
keep_mask |= ~(memword_t)0U << (len * 8);
uint8_t bytes[sizeof(memword_t) * 4];
memword_t words[4];
memword_t *dstp = addr;
memword_t *edstp;
memword_t fill;
memword_t keep_mask = 0;