1 #include <lib9.h> 2 #include <bio.h> 3 #include "mach.h" 4 5 /* 6 * big-endian short 7 */ 8 ushort 9 beswab(ushort s) 10 { 11 uchar *p; 12 13 p = (uchar*)&s; 14 return (p[0]<<8) | p[1]; 15 } 16 17 /* 18 * big-endian long 19 */ 20 ulong 21 beswal(ulong l) 22 { 23 uchar *p; 24 25 p = (uchar*)&l; 26 return (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3]; 27 } 28 29 /* 30 * big-endian vlong 31 */ 32 uvlong 33 beswav(uvlong v) 34 { 35 uchar *p; 36 37 p = (uchar*)&v; 38 return ((uvlong)p[0]<<56) | ((uvlong)p[1]<<48) | ((uvlong)p[2]<<40) 39 | ((uvlong)p[3]<<32) | ((uvlong)p[4]<<24) 40 | ((uvlong)p[5]<<16) | ((uvlong)p[6]<<8) 41 | (uvlong)p[7]; 42 } 43 44 /* 45 * little-endian short 46 */ 47 ushort 48 leswab(ushort s) 49 { 50 uchar *p; 51 52 p = (uchar*)&s; 53 return (p[1]<<8) | p[0]; 54 } 55 56 /* 57 * little-endian long 58 */ 59 ulong 60 leswal(ulong l) 61 { 62 uchar *p; 63 64 p = (uchar*)&l; 65 return (p[3]<<24) | (p[2]<<16) | (p[1]<<8) | p[0]; 66 } 67 68 /* 69 * little-endian vlong 70 */ 71 uvlong 72 leswav(uvlong v) 73 { 74 uchar *p; 75 76 p = (uchar*)&v; 77 return ((uvlong)p[7]<<56) | ((uvlong)p[6]<<48) | ((uvlong)p[5]<<40) 78 | ((uvlong)p[4]<<32) | ((uvlong)p[3]<<24) 79 | ((uvlong)p[2]<<16) | ((uvlong)p[1]<<8) 80 | (uvlong)p[0]; 81 } 82