1*fb6c29d0Slogin #include <common/unistd.h>
2*fb6c29d0Slogin #include <common/glib.h>
3*fb6c29d0Slogin
4*fb6c29d0Slogin
swab(void * restrict src,void * restrict dest,ssize_t nbytes)5*fb6c29d0Slogin void swab(void *restrict src, void *restrict dest, ssize_t nbytes)
6*fb6c29d0Slogin {
7*fb6c29d0Slogin unsigned char buf[32];
8*fb6c29d0Slogin char *_src = src;
9*fb6c29d0Slogin char *_dest = dest;
10*fb6c29d0Slogin uint32_t transfer;
11*fb6c29d0Slogin for (; nbytes > 0; nbytes -= transfer)
12*fb6c29d0Slogin {
13*fb6c29d0Slogin transfer = (nbytes > 32) ? 32 : nbytes;
14*fb6c29d0Slogin memcpy(buf, _src, transfer);
15*fb6c29d0Slogin memcpy(_src, _dest, transfer);
16*fb6c29d0Slogin memcpy(_dest, buf, transfer);
17*fb6c29d0Slogin _src += transfer;
18*fb6c29d0Slogin _dest += transfer;
19*fb6c29d0Slogin }
20*fb6c29d0Slogin }