1/*- 2 * Copyright (c) 1991 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Ralph Campbell. 7 * 8 * %sccs.include.redist.c% 9 */ 10 11#include <machine/machAsmDefs.h> 12 13#if defined(LIBC_SCCS) && !defined(lint) 14 ASMSTR("@(#)htonl.s 5.4 (Berkeley) 07/26/92") 15#endif /* LIBC_SCCS and not lint */ 16 17#include <machine/endian.h> 18#undef htonl 19#undef ntohl 20 21/* 22 * netorder = htonl(hostorder) 23 * hostorder = ntohl(netorder) 24 */ 25LEAF(htonl) # a0 = 0x11223344, return 0x44332211 26ALEAF(ntohl) 27#if BYTE_ORDER == LITTLE_ENDIAN 28 srl v1, a0, 24 # v1 = 0x00000011 29 sll v0, a0, 24 # v0 = 0x44000000 30 or v0, v0, v1 31 and v1, a0, 0xff00 32 sll v1, v1, 8 # v1 = 0x00330000 33 or v0, v0, v1 34 srl v1, a0, 8 35 and v1, v1, 0xff00 # v1 = 0x00002200 36 or v0, v0, v1 37#else 38#if BYTE_ORDER == BIG_ENDIAN 39 move v0, a0 40#else 41 ERROR 42#endif 43#endif 44 j ra 45END(htonl) 46