1*479ab7f0SSascha Wildner /* 2*479ab7f0SSascha Wildner * Written by Manuel Bouyer <bouyer@netbsd.org>. 3*479ab7f0SSascha Wildner * Public domain. 4*479ab7f0SSascha Wildner * 5*479ab7f0SSascha Wildner * $NetBSD: bswap32.c,v 1.1 1997/10/09 15:42:33 bouyer Exp $ 6*479ab7f0SSascha Wildner * $NetBSD: bswap64.c,v 1.1 1997/10/09 15:42:33 bouyer Exp $ 7*479ab7f0SSascha Wildner * $DragonFly: src/lib/libstand/bswap.c,v 1.3 2005/12/11 02:27:26 swildner Exp $ 8*479ab7f0SSascha Wildner */ 9*479ab7f0SSascha Wildner 10*479ab7f0SSascha Wildner #include <sys/types.h> 11*479ab7f0SSascha Wildner 12*479ab7f0SSascha Wildner #undef bswap32 13*479ab7f0SSascha Wildner #undef bswap64 14*479ab7f0SSascha Wildner 15*479ab7f0SSascha Wildner u_int32_t bswap32(u_int32_t x)16*479ab7f0SSascha Wildnerbswap32(u_int32_t x) 17*479ab7f0SSascha Wildner { 18*479ab7f0SSascha Wildner return ((x << 24) & 0xff000000 ) | 19*479ab7f0SSascha Wildner ((x << 8) & 0x00ff0000 ) | 20*479ab7f0SSascha Wildner ((x >> 8) & 0x0000ff00 ) | 21*479ab7f0SSascha Wildner ((x >> 24) & 0x000000ff ); 22*479ab7f0SSascha Wildner } 23*479ab7f0SSascha Wildner 24*479ab7f0SSascha Wildner u_int64_t bswap64(u_int64_t x)25*479ab7f0SSascha Wildnerbswap64(u_int64_t x) 26*479ab7f0SSascha Wildner { 27*479ab7f0SSascha Wildner u_int32_t *p = (u_int32_t*)&x; 28*479ab7f0SSascha Wildner u_int32_t t; 29*479ab7f0SSascha Wildner t = bswap32(p[0]); 30*479ab7f0SSascha Wildner p[0] = bswap32(p[1]); 31*479ab7f0SSascha Wildner p[1] = t; 32*479ab7f0SSascha Wildner return x; 33*479ab7f0SSascha Wildner } 34