EGCS fixes. Implement htons as a C macro instead of asm; generates as
good code as the asm implementation _and_ can be optimized.
This commit is contained in:
parent
6fbd9e0504
commit
b6158fa5e3
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: endian.h,v 1.10 1998/08/08 11:18:32 ragge Exp $ */
|
||||
/* $NetBSD: endian.h,v 1.11 1998/11/07 17:22:58 ragge Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1987, 1991 Regents of the University of California.
|
||||
|
@ -83,15 +83,10 @@ __END_DECLS
|
|||
__y; })
|
||||
|
||||
#define __byte_swap_word_variable(x) \
|
||||
({ register u_int16_t __y, __x = (x); \
|
||||
({ register u_int16_t __x = (x); \
|
||||
\
|
||||
__asm ("insv %1,$16,$8,%1; \
|
||||
ashl $-8,%1,%0" \
|
||||
: "&=r" (__y) \
|
||||
: "r" (__x) \
|
||||
: "cc" ); \
|
||||
__y; })
|
||||
|
||||
(u_int16_t)(__x << 8 | __x >> 8); \
|
||||
})
|
||||
|
||||
#define __byte_swap_long(x) __byte_swap_long_variable(x)
|
||||
#define __byte_swap_word(x) __byte_swap_word_variable(x)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: macros.h,v 1.16 1998/08/08 11:18:33 ragge Exp $ */
|
||||
/* $NetBSD: macros.h,v 1.17 1998/11/07 17:22:58 ragge Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1998 Ludd, University of Lule}, Sweden.
|
||||
|
@ -32,7 +32,7 @@
|
|||
|
||||
/* All bugs are subject to removal without further notice */
|
||||
|
||||
#if !defined(_VAX_MACROS_H_)
|
||||
#if !defined(_VAX_MACROS_H_) && !defined(lint)
|
||||
#define _VAX_MACROS_H_
|
||||
|
||||
/* Here general macros are supposed to be stored */
|
||||
|
@ -130,7 +130,7 @@ bzero(void *block, u_int len)
|
|||
static __inline__ int
|
||||
memcmp(const void *b1, const void *b2, size_t len)
|
||||
{
|
||||
register ret;
|
||||
register int ret;
|
||||
|
||||
__asm__ __volatile("cmpc3 %3,(%1),(%2);movl r0,%0"
|
||||
: "=r" (ret)
|
||||
|
@ -142,7 +142,7 @@ memcmp(const void *b1, const void *b2, size_t len)
|
|||
static __inline__ int
|
||||
bcmp(const void *b1, const void *b2, size_t len)
|
||||
{
|
||||
register ret;
|
||||
register int ret;
|
||||
|
||||
__asm__ __volatile("cmpc3 %3,(%1),(%2);movl r0,%0"
|
||||
: "=r" (ret)
|
||||
|
@ -155,7 +155,7 @@ bcmp(const void *b1, const void *b2, size_t len)
|
|||
static __inline__ size_t
|
||||
strlen(const char *cp)
|
||||
{
|
||||
register ret;
|
||||
register size_t ret;
|
||||
|
||||
__asm__ __volatile("locc $0,$65535,(%1);subl3 r0,$65535,%0"
|
||||
: "=r" (ret)
|
||||
|
@ -222,7 +222,7 @@ memchr(const void *cp, int c, size_t len)
|
|||
static __inline__ int
|
||||
strcmp(const char *cp, const char *c2)
|
||||
{
|
||||
register ret;
|
||||
register int ret;
|
||||
__asm__ __volatile("locc $0,$65535,(%1);subl3 r0,$65535,r0;incl r0;
|
||||
cmpc3 r0,(%1),(%2);beql 1f;movl $1,r2;
|
||||
cmpb (r1),(r3);bcc 1f;movl $-1,r2;1:movl r2,%0"
|
||||
|
@ -248,7 +248,7 @@ static __inline__ int locc(int mask, char *cp,u_int size){
|
|||
static __inline__ int
|
||||
scanc(u_int size, const u_char *cp, const u_char *table, int mask)
|
||||
{
|
||||
register ret;
|
||||
register int ret;
|
||||
|
||||
__asm__ __volatile("scanc %1,(%2),(%3),%4;movl r0,%0"
|
||||
: "=g"(ret)
|
||||
|
@ -260,7 +260,7 @@ scanc(u_int size, const u_char *cp, const u_char *table, int mask)
|
|||
static __inline__ int
|
||||
skpc(int mask, size_t size, u_char *cp)
|
||||
{
|
||||
register ret;
|
||||
register int ret;
|
||||
|
||||
__asm__ __volatile("skpc %1,%2,(%3);movl r0,%0"
|
||||
: "=g"(ret)
|
||||
|
|
Loading…
Reference in New Issue