From 427705465b06e9ac19e6eacf579ce35167062737 Mon Sep 17 00:00:00 2001 From: pooka Date: Wed, 8 Aug 2007 13:12:08 +0000 Subject: [PATCH] Provide rumpmachine bswap.h, which makes bswapxx() call rumpuser directly instead of relying on a symbol in rumpkern. I would like to make it call the libc symbol directly, but I don't currently know how to make it do that MI. Makes hfs work (on i386), as it avoids endless recursion in bswap64(). Thanks to dillo for the image! --- sys/rump/include/machine/bswap.h | 47 ++++++++++++++++++++++++++++++++ sys/rump/librump/rumpkern/emul.c | 29 +------------------- 2 files changed, 48 insertions(+), 28 deletions(-) create mode 100644 sys/rump/include/machine/bswap.h diff --git a/sys/rump/include/machine/bswap.h b/sys/rump/include/machine/bswap.h new file mode 100644 index 000000000000..495ee584287c --- /dev/null +++ b/sys/rump/include/machine/bswap.h @@ -0,0 +1,47 @@ +/* $NetBSD: bswap.h,v 1.1 2007/08/08 13:12:09 pooka Exp $ */ + +/* + * Copyright (c) 2007 Antti Kantee. All Rights Reserved. + * + * Development of this software was supported by Google Summer of Code. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _SYS_RUMP_BSWAP_H_ +#define _SYS_RUMP_BSWAP_H_ + +#include + +#undef bswap16 +uint16_t rumpuser_bswap16(uint16_t); +#define bswap16(a) rumpuser_bswap16(a) + +#undef bswap32 +uint32_t rumpuser_bswap32(uint32_t); +#define bswap32(a) rumpuser_bswap32(a) + +#undef bswap64 +uint64_t rumpuser_bswap64(uint64_t); +#define bswap64(a) rumpuser_bswap64(a) + +#endif /* _SYS_RUMP_BSWAP_H_ */ diff --git a/sys/rump/librump/rumpkern/emul.c b/sys/rump/librump/rumpkern/emul.c index 0df529d7f7d8..f66ac2f701fa 100644 --- a/sys/rump/librump/rumpkern/emul.c +++ b/sys/rump/librump/rumpkern/emul.c @@ -1,4 +1,4 @@ -/* $NetBSD: emul.c,v 1.3 2007/08/08 09:06:11 pooka Exp $ */ +/* $NetBSD: emul.c,v 1.4 2007/08/08 13:12:08 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -207,33 +207,6 @@ ltsleep(wchan_t ident, pri_t prio, const char *wmesg, int timo, panic("%s: not implemented", __func__); } -/* - * XXX: ok, this is stupid - */ -#undef bswap16 -uint16_t -bswap16(uint16_t val) -{ - - return rumpuser_bswap16(val); -} - -#undef bswap32 -uint32_t -bswap32(uint32_t value) -{ - - return rumpuser_bswap32(value); -} - -#undef bswap64 -uint64_t -bswap64(uint64_t value) -{ - - return rumpuser_bswap64(value); -} - void malloc_type_attach(struct malloc_type *type) {