1bd389b36SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier 33e12c5d1SDavid du Colombier /* 47dd7cddfSDavid du Colombier * big-endian short 53e12c5d1SDavid du Colombier */ 63e12c5d1SDavid du Colombier ushort beswab(ushort s)73e12c5d1SDavid du Colombierbeswab(ushort s) 83e12c5d1SDavid du Colombier { 93e12c5d1SDavid du Colombier uchar *p; 103e12c5d1SDavid du Colombier 113e12c5d1SDavid du Colombier p = (uchar*)&s; 123e12c5d1SDavid du Colombier return (p[0]<<8) | p[1]; 133e12c5d1SDavid du Colombier } 143e12c5d1SDavid du Colombier 153e12c5d1SDavid du Colombier /* 167dd7cddfSDavid du Colombier * big-endian long 173e12c5d1SDavid du Colombier */ 18*4de34a7eSDavid du Colombier ulong beswal(ulong l)19*4de34a7eSDavid du Colombierbeswal(ulong l) 203e12c5d1SDavid du Colombier { 213e12c5d1SDavid du Colombier uchar *p; 223e12c5d1SDavid du Colombier 233e12c5d1SDavid du Colombier p = (uchar*)&l; 243e12c5d1SDavid du Colombier return (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3]; 253e12c5d1SDavid du Colombier } 263e12c5d1SDavid du Colombier 273e12c5d1SDavid du Colombier /* 287dd7cddfSDavid du Colombier * big-endian vlong 297dd7cddfSDavid du Colombier */ 30*4de34a7eSDavid du Colombier uvlong beswav(uvlong v)31*4de34a7eSDavid du Colombierbeswav(uvlong v) 327dd7cddfSDavid du Colombier { 337dd7cddfSDavid du Colombier uchar *p; 347dd7cddfSDavid du Colombier 357dd7cddfSDavid du Colombier p = (uchar*)&v; 36*4de34a7eSDavid du Colombier return ((uvlong)p[0]<<56) | ((uvlong)p[1]<<48) | ((uvlong)p[2]<<40) 37*4de34a7eSDavid du Colombier | ((uvlong)p[3]<<32) | ((uvlong)p[4]<<24) 38*4de34a7eSDavid du Colombier | ((uvlong)p[5]<<16) | ((uvlong)p[6]<<8) 39*4de34a7eSDavid du Colombier | (uvlong)p[7]; 407dd7cddfSDavid du Colombier } 417dd7cddfSDavid du Colombier 427dd7cddfSDavid du Colombier /* 437dd7cddfSDavid du Colombier * little-endian short 443e12c5d1SDavid du Colombier */ 453e12c5d1SDavid du Colombier ushort leswab(ushort s)463e12c5d1SDavid du Colombierleswab(ushort s) 473e12c5d1SDavid du Colombier { 483e12c5d1SDavid du Colombier uchar *p; 493e12c5d1SDavid du Colombier 503e12c5d1SDavid du Colombier p = (uchar*)&s; 513e12c5d1SDavid du Colombier return (p[1]<<8) | p[0]; 523e12c5d1SDavid du Colombier } 533e12c5d1SDavid du Colombier 543e12c5d1SDavid du Colombier /* 557dd7cddfSDavid du Colombier * little-endian long 563e12c5d1SDavid du Colombier */ 57*4de34a7eSDavid du Colombier ulong leswal(ulong l)58*4de34a7eSDavid du Colombierleswal(ulong l) 593e12c5d1SDavid du Colombier { 603e12c5d1SDavid du Colombier uchar *p; 613e12c5d1SDavid du Colombier 623e12c5d1SDavid du Colombier p = (uchar*)&l; 633e12c5d1SDavid du Colombier return (p[3]<<24) | (p[2]<<16) | (p[1]<<8) | p[0]; 643e12c5d1SDavid du Colombier } 657dd7cddfSDavid du Colombier 667dd7cddfSDavid du Colombier /* 677dd7cddfSDavid du Colombier * little-endian vlong 687dd7cddfSDavid du Colombier */ 69*4de34a7eSDavid du Colombier uvlong leswav(uvlong v)70*4de34a7eSDavid du Colombierleswav(uvlong v) 717dd7cddfSDavid du Colombier { 727dd7cddfSDavid du Colombier uchar *p; 737dd7cddfSDavid du Colombier 747dd7cddfSDavid du Colombier p = (uchar*)&v; 75*4de34a7eSDavid du Colombier return ((uvlong)p[7]<<56) | ((uvlong)p[6]<<48) | ((uvlong)p[5]<<40) 76*4de34a7eSDavid du Colombier | ((uvlong)p[4]<<32) | ((uvlong)p[3]<<24) 77*4de34a7eSDavid du Colombier | ((uvlong)p[2]<<16) | ((uvlong)p[1]<<8) 78*4de34a7eSDavid du Colombier | (uvlong)p[0]; 797dd7cddfSDavid du Colombier } 80