|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* ! 23: * @OSF_COPYRIGHT@ ! 24: * ! 25: */ ! 26: ! 27: #ifndef _MACHINE_ENDIAN_H_ ! 28: #define _MACHINE_ENDIAN_H_ ! 29: ! 30: /* ! 31: * Definitions for byte order, ! 32: * according to byte significance from low address to high. ! 33: */ ! 34: #define LITTLE_ENDIAN 1234 /* least-significant byte first (vax) */ ! 35: #define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */ ! 36: #define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp) */ ! 37: ! 38: #define BYTE_ORDER LITTLE_ENDIAN /* byte order on i386 */ ! 39: #define ENDIAN LITTLE ! 40: ! 41: /* ! 42: * Macros for network/external number representation conversion. ! 43: */ ! 44: ! 45: unsigned short ntohs(unsigned short), htons(unsigned short); ! 46: unsigned long ntohl(unsigned long), htonl(unsigned long); ! 47: ! 48: /* ! 49: * Use GNUC support to inline the byteswappers. ! 50: */ ! 51: ! 52: extern __inline__ ! 53: unsigned short ! 54: ntohs(unsigned short w_int) ! 55: { ! 56: register unsigned short w = w_int; ! 57: __asm__ volatile("xchgb %h1,%b1" : "=q" (w) : "0" (w)); ! 58: return (w); /* zero-extend for compat */ ! 59: } ! 60: ! 61: #define htons ntohs ! 62: ! 63: extern __inline__ ! 64: unsigned long ! 65: ntohl(register unsigned long value) ! 66: { ! 67: register unsigned long l = value; ! 68: __asm__ volatile("bswap %0" : "=r" (l) : "0" (l)); ! 69: return l; ! 70: } ! 71: ! 72: #define htonl ntohl ! 73: ! 74: #define NTOHL(x) (x) = ntohl((unsigned long)x) ! 75: #define NTOHS(x) (x) = ntohs((unsigned short)x) ! 76: #define HTONL(x) (x) = htonl((unsigned long)x) ! 77: #define HTONS(x) (x) = htons((unsigned short)x) ! 78: ! 79: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.