diff options
Diffstat (limited to 'emulators/qemu-devel/files')
24 files changed, 0 insertions, 3721 deletions
diff --git a/emulators/qemu-devel/files/patch-Makefile.target b/emulators/qemu-devel/files/patch-Makefile.target deleted file mode 100644 index fe251c021ced..000000000000 --- a/emulators/qemu-devel/files/patch-Makefile.target +++ /dev/null @@ -1,9 +0,0 @@ -Index: qemu/Makefile.target -@@ -18,6 +18,7 @@ - DEFINES+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ARCH) - endif - CFLAGS=-Wall -O2 -g -fno-strict-aliasing -+CFLAGS+=-I${LOCALBASE}/include - #CFLAGS+=-Werror - LDFLAGS=-g - LIBS= diff --git a/emulators/qemu-devel/files/patch-aa b/emulators/qemu-devel/files/patch-aa deleted file mode 100644 index 25eaa72ab235..000000000000 --- a/emulators/qemu-devel/files/patch-aa +++ /dev/null @@ -1,12 +0,0 @@ -diff -urd --exclude=CVS ../cvs/qemu/Makefile qemu-0.5.5/Makefile ---- ../cvs/qemu/Makefile Mon May 17 21:06:42 2004 -+++ qemu-0.5.5/Makefile Sun May 30 05:26:19 2004 -@@ -70,7 +70,7 @@ - - # documentation - %.html: %.texi -- texi2html -monolithic -number $< -+ -texi2html -monolithic -number $< - - qemu.1: qemu-doc.texi - ./texi2pod.pl $< qemu.pod diff --git a/emulators/qemu-devel/files/patch-ac b/emulators/qemu-devel/files/patch-ac deleted file mode 100644 index 8adf3dbd9637..000000000000 --- a/emulators/qemu-devel/files/patch-ac +++ /dev/null @@ -1,10 +0,0 @@ -Index: qemu/configure -@@ -204,7 +204,7 @@ - - if test -z "$sdl" ; then - --sdl_config="sdl-config" -+sdl_config="${SDL_CONFIG}" - sdl=no - sdl_static=no - diff --git a/emulators/qemu-devel/files/patch-audio-4 b/emulators/qemu-devel/files/patch-audio-4 deleted file mode 100644 index bb71885a2992..000000000000 --- a/emulators/qemu-devel/files/patch-audio-4 +++ /dev/null @@ -1,24 +0,0 @@ -Index: qemu/audio/audio_template.h -@@ -32,6 +32,10 @@ - #define SW glue (SWVoice, In) - #endif - -+#ifndef UINT64_MAX -+#define UINT64_MAX ((uint64_t)(18446744073709551615ULL)) -+#endif -+ - static void glue (audio_pcm_sw_fini_, TYPE) (SW *sw) - { - glue (audio_pcm_sw_free_resources_, TYPE) (sw); -Index: qemu/audio/audio.c -@@ -36,6 +36,10 @@ - /* #define DEBUG_LIVE */ - /* #define DEBUG_OUT */ - -+#ifndef INT16_MAX -+#define INT16_MAX (32767) -+#endif -+ - static struct audio_driver *drvtab[] = { - #ifdef CONFIG_OSS - &oss_audio_driver, diff --git a/emulators/qemu-devel/files/patch-audio::ossaudio.c b/emulators/qemu-devel/files/patch-audio::ossaudio.c deleted file mode 100644 index 8fc9e99b9153..000000000000 --- a/emulators/qemu-devel/files/patch-audio::ossaudio.c +++ /dev/null @@ -1,11 +0,0 @@ -Index: qemu/audio/ossaudio.c -@@ -21,8 +21,8 @@ - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ --#include <sys/mman.h> - #include <sys/types.h> -+#include <sys/mman.h> - #include <sys/ioctl.h> - #include <sys/soundcard.h> - #include <assert.h> diff --git a/emulators/qemu-devel/files/patch-bc b/emulators/qemu-devel/files/patch-bc deleted file mode 100644 index 7ad83440d48b..000000000000 --- a/emulators/qemu-devel/files/patch-bc +++ /dev/null @@ -1,12 +0,0 @@ -Index: qemu/i386-dis.c -@@ -2896,6 +2896,10 @@ - OP_E (bytemode, sizeflag); - } - -+#ifndef PRIx64 -+#define PRIx64 "llx" -+#endif -+ - static void - print_operand_value (buf, hex, disp) - char *buf; diff --git a/emulators/qemu-devel/files/patch-bd b/emulators/qemu-devel/files/patch-bd deleted file mode 100644 index 3f85d63c03a1..000000000000 --- a/emulators/qemu-devel/files/patch-bd +++ /dev/null @@ -1,10 +0,0 @@ -Index: qemu/configure -@@ -286,7 +286,7 @@ - if test -z "$prefix" ; then - prefix="/usr/local" - fi --mandir="$prefix/share/man" -+mandir="$prefix/man" - datadir="$prefix/share/qemu" - docdir="$prefix/share/doc/qemu" - bindir="$prefix/bin" diff --git a/emulators/qemu-devel/files/patch-be b/emulators/qemu-devel/files/patch-be deleted file mode 100644 index 6de47db9eaf9..000000000000 --- a/emulators/qemu-devel/files/patch-be +++ /dev/null @@ -1,16 +0,0 @@ -Index: qemu/vl.c -@@ -662,6 +662,14 @@ - case QEMU_TIMER_REALTIME: - #ifdef _WIN32 - return GetTickCount(); -+#elif defined(_BSD) -+ { -+ struct timeval r; -+ if (!gettimeofday(&r, NULL)) { -+ return ((timer_freq * 1000LL) * (int64_t)r.tv_sec -+ + ((int64_t)r.tv_usec * timer_freq) / 1000) / timer_freq; -+ } -+ } - #else - { - struct tms tp; diff --git a/emulators/qemu-devel/files/patch-bf b/emulators/qemu-devel/files/patch-bf deleted file mode 100644 index 57cc889e3119..000000000000 --- a/emulators/qemu-devel/files/patch-bf +++ /dev/null @@ -1,37 +0,0 @@ -Index: qemu/slirp/slirp_config.h -@@ -86,7 +86,7 @@ - #undef BAD_SPRINTF - - /* Define if you have readv */ --#undef HAVE_READV -+#define HAVE_READV - - /* Define if iovec needs to be declared */ - #undef DECLARE_IOVEC -@@ -95,7 +95,7 @@ - #undef DECLARE_SPRINTF - - /* Define if you have a POSIX.1 sys/wait.h */ --#undef HAVE_SYS_WAIT_H -+#define HAVE_SYS_WAIT_H - - /* Define if you have sys/select.h */ - #define HAVE_SYS_SELECT_H -@@ -107,7 +107,7 @@ - #define HAVE_ARPA_INET_H - - /* Define if you have sys/signal.h */ --#undef HAVE_SYS_SIGNAL_H -+#define HAVE_SYS_SIGNAL_H - - /* Define if you have sys/stropts.h */ - #undef HAVE_SYS_STROPTS_H -@@ -180,7 +180,7 @@ - #undef HAVE_GRANTPT - - /* Define if you have fchmod */ --#undef HAVE_FCHMOD -+#define HAVE_FCHMOD - - /* Define if you have <sys/type32.h> */ - #undef HAVE_SYS_TYPES32_H diff --git a/emulators/qemu-devel/files/patch-bg b/emulators/qemu-devel/files/patch-bg deleted file mode 100644 index 57a9ef32df97..000000000000 --- a/emulators/qemu-devel/files/patch-bg +++ /dev/null @@ -1,25 +0,0 @@ -Index: qemu/Makefile.target -@@ -179,7 +179,7 @@ - - ######################################################### - --DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -+DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DSMBD=\"${LOCALBASE}/sbin/smbd\" - LIBS+=-lm - ifndef CONFIG_USER_ONLY - LIBS+=-lz -Index: qemu/vl.c -@@ -1560,8 +1560,13 @@ - fclose(f); - atexit(smb_exit); - -+#ifdef __FreeBSD__ -+ snprintf(smb_cmdline, sizeof(smb_cmdline), SMBD " -s %s", -+ smb_conf); -+#else - snprintf(smb_cmdline, sizeof(smb_cmdline), "/usr/sbin/smbd -s %s", - smb_conf); -+#endif - - slirp_add_exec(0, smb_cmdline, 4, 139); - } diff --git a/emulators/qemu-devel/files/patch-bh b/emulators/qemu-devel/files/patch-bh deleted file mode 100644 index 1218bb4656c5..000000000000 --- a/emulators/qemu-devel/files/patch-bh +++ /dev/null @@ -1,26 +0,0 @@ -Index: qemu/dyngen-exec.h -=================================================================== -RCS file: /cvsroot/qemu/qemu/dyngen-exec.h,v -retrieving revision 1.12 -diff -w -u -d -r1.12 dyngen-exec.h ---- dyngen-exec.h 12 May 2004 19:32:15 -0000 1.12 -+++ dyngen-exec.h 21 May 2004 15:00:41 -0000 -@@ -21,6 +21,8 @@ - #define __DYNGEN_EXEC_H__ - - #include <stddef.h> -+#include <stdio.h> -+#include "config.h" - - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; -@@ -54,9 +56,6 @@ - #define UINT32_MAX (4294967295U) - #define UINT64_MAX ((uint64_t)(18446744073709551615)) - --typedef struct FILE FILE; --extern int fprintf(FILE *, const char *, ...); --extern int printf(const char *, ...); - #undef NULL - #define NULL 0 - #ifdef _BSD diff --git a/emulators/qemu-devel/files/patch-bk b/emulators/qemu-devel/files/patch-bk deleted file mode 100644 index 09281f31aef2..000000000000 --- a/emulators/qemu-devel/files/patch-bk +++ /dev/null @@ -1,190 +0,0 @@ -Index: qemu/slirp/bootp.c -@@ -29,11 +29,12 @@ - - #define START_ADDR 15 - --#define LEASE_TIME (24 * 3600) -+#define LEASE_TIME (120) - - typedef struct { - uint8_t allocated; - uint8_t macaddr[6]; -+ int time; - } BOOTPClient; - - BOOTPClient bootp_clients[NB_ADDR]; -@@ -68,26 +69,54 @@ - { - BOOTPClient *bc; - int i; -+ int now=time(NULL); - - for(i = 0; i < NB_ADDR; i++) { - if (!memcmp(macaddr, bootp_clients[i].macaddr, 6)) - goto found; - } -+ for(i = 0; i < NB_ADDR; i++) { -+ if (now-bootp_clients[i].time > 3*LEASE_TIME) -+ goto found; -+ } - return NULL; - found: - bc = &bootp_clients[i]; -- bc->allocated = 1; - paddr->s_addr = htonl(ntohl(special_addr.s_addr) | (i + START_ADDR)); - return bc; - } - -+static BOOTPClient *find_reqaddr(struct in_addr *paddr, struct in_addr *reqaddr, const uint8_t *macaddr) -+{ -+ BOOTPClient *bc=NULL; -+ int i; -+ /*check the net prefix*/ -+ if ((ntohl(reqaddr->s_addr) & 0xffffff00) == -+ (ntohl(special_addr.s_addr) & 0xffffff00)) { -+ i=(ntohl(reqaddr->s_addr) & 0xff) - START_ADDR; -+ if (i>=0 && i< NB_ADDR) { -+ bc = &bootp_clients[i]; -+ if (bc->allocated && -+ (memcmp(macaddr, bootp_clients[i].macaddr, 6)==0)) { -+ paddr->s_addr = reqaddr->s_addr; -+ return bc; -+ } -+ else -+ bc=NULL; -+ } -+ } -+ return bc; -+} -+ -+ - static void dhcp_decode(const uint8_t *buf, int size, -- int *pmsg_type) -+ int *pmsg_type, struct sockaddr_in *preqaddr) - { - const uint8_t *p, *p_end; - int len, tag; - - *pmsg_type = 0; -+ preqaddr->sin_addr.s_addr=htonl(0L); - - p = buf; - p_end = buf + size; -@@ -114,6 +143,10 @@ - if (len >= 1) - *pmsg_type = p[0]; - break; -+ case RFC2132_REQ_ADDR: -+ if (len == 4) { -+ memcpy(&(preqaddr->sin_addr),p,4); -+ } - default: - break; - } -@@ -127,14 +160,14 @@ - BOOTPClient *bc; - struct mbuf *m; - struct bootp_t *rbp; -- struct sockaddr_in saddr, daddr; -+ struct sockaddr_in saddr, daddr, reqaddr; - struct in_addr dns_addr; - int dhcp_msg_type, val; -- uint8_t *q; -+ uint8_t *q,replytype; - - /* extract exact DHCP msg type */ -- dhcp_decode(bp->bp_vend, DHCP_OPT_LEN, &dhcp_msg_type); -- dprintf("bootp packet op=%d msgtype=%d\n", bp->bp_op, dhcp_msg_type); -+ dhcp_decode(bp->bp_vend, DHCP_OPT_LEN, &dhcp_msg_type,&reqaddr); -+ dprintf("bootp packet op=%d msgtype=%d reqaddr=%x\n", bp->bp_op, dhcp_msg_type,ntohl(reqaddr.sin_addr.s_addr)); - - if (dhcp_msg_type == 0) - dhcp_msg_type = DHCPREQUEST; /* Force reply for old BOOTP clients */ -@@ -152,21 +185,18 @@ - m->m_data += sizeof(struct udpiphdr); - memset(rbp, 0, sizeof(struct bootp_t)); - -- if (dhcp_msg_type == DHCPDISCOVER) { -- new_addr: -- bc = get_new_addr(&daddr.sin_addr); -- if (!bc) { -- dprintf("no address left\n"); -- return; -- } -- memcpy(bc->macaddr, client_ethaddr, 6); -- } else { -- bc = find_addr(&daddr.sin_addr, bp->bp_hwaddr); -- if (!bc) { -- /* if never assigned, behaves as if it was already -- assigned (windows fix because it remembers its address) */ -- goto new_addr; -- } -+ bc=NULL; -+ daddr.sin_addr.s_addr=htonl(0L); -+ if (dhcp_msg_type == DHCPREQUEST) { -+ if (reqaddr.sin_addr.s_addr != htonl(0L)) -+ bc = find_reqaddr(&daddr.sin_addr, &reqaddr.sin_addr, bp->bp_hwaddr); -+ else -+ bc = find_addr(&daddr.sin_addr, bp->bp_hwaddr); -+ } -+ else if (dhcp_msg_type == DHCPDISCOVER) { -+ bc = find_addr(&daddr.sin_addr, bp->bp_hwaddr); -+ if (!bc) -+ bc = get_new_addr(&daddr.sin_addr); - } - dprintf("offered addr=%08x\n", ntohl(daddr.sin_addr.s_addr)); - -@@ -181,25 +211,27 @@ - rbp->bp_hlen = 6; - memcpy(rbp->bp_hwaddr, bp->bp_hwaddr, 6); - -- rbp->bp_yiaddr = daddr.sin_addr; /* Client IP address */ -- rbp->bp_siaddr = saddr.sin_addr; /* Server IP address */ -+ rbp->bp_yiaddr = daddr.sin_addr; /* IP address */ - - q = rbp->bp_vend; - memcpy(q, rfc1533_cookie, 4); - q += 4; - -- if (dhcp_msg_type == DHCPDISCOVER) { -- *q++ = RFC2132_MSG_TYPE; -- *q++ = 1; -- *q++ = DHCPOFFER; -- } else if (dhcp_msg_type == DHCPREQUEST) { -+ if (bc != NULL) { -+ memcpy(bc->macaddr, client_ethaddr, 6); -+ bc->allocated = 1; -+ bc->time = time(NULL); -+ replytype=(dhcp_msg_type == DHCPDISCOVER)?DHCPOFFER:DHCPACK; -+ } -+ else -+ replytype=DHCPNACK; -+ - *q++ = RFC2132_MSG_TYPE; - *q++ = 1; -- *q++ = DHCPACK; -- } -+ *q++ = replytype; - -- if (dhcp_msg_type == DHCPDISCOVER || -- dhcp_msg_type == DHCPREQUEST) { -+ if ((dhcp_msg_type == DHCPDISCOVER || -+ dhcp_msg_type == DHCPREQUEST) && replytype!=DHCPNACK) { - *q++ = RFC2132_SRV_ID; - *q++ = 4; - memcpy(q, &saddr.sin_addr, 4); -Index: qemu/slirp/bootp.h -=================================================================== -RCS file: /cvsroot/qemu/qemu/slirp/bootp.h,v -retrieving revision 1.1 -diff -u -r1.1 bootp.h ---- slirp/bootp.h 22 Apr 2004 00:10:47 -0000 1.1 -+++ slirp/bootp.h 5 Jun 2004 19:34:22 -0000 -@@ -71,6 +71,7 @@ - #define DHCPOFFER 2 - #define DHCPREQUEST 3 - #define DHCPACK 5 -+#define DHCPNACK 6 - - #define RFC1533_VENDOR_MAJOR 0 - #define RFC1533_VENDOR_MINOR 0 diff --git a/emulators/qemu-devel/files/patch-bt b/emulators/qemu-devel/files/patch-bt deleted file mode 100644 index 62e8924722b3..000000000000 --- a/emulators/qemu-devel/files/patch-bt +++ /dev/null @@ -1,103 +0,0 @@ -Index: qemu/vl.c -@@ -43,6 +43,9 @@ - #ifndef __APPLE__ - #include <libutil.h> - #endif -+#ifdef __FreeBSD__ -+#include <sys/module.h> -+#endif - #else - #include <linux/if.h> - #include <linux/if_tun.h> -@@ -1059,6 +1062,34 @@ - - #endif /* CONFIG_SLIRP */ - -+#ifdef __FreeBSD__ -+#define LOAD_QUIETLY 1 -+#define LOAD_VERBOSLY 2 -+ -+int -+loadmodules(int how, const char *module, ...) -+{ -+ int loaded = 0; -+ va_list ap; -+ -+ va_start(ap, module); -+#ifndef NO_MODULES -+ while (module != NULL) { -+ if (modfind(module) == -1) { -+ if (kldload(module) == -1) { -+ if (how == LOAD_VERBOSLY) -+ fprintf(stderr, "%s: Cannot load module\n", module); -+ } else -+ loaded++; -+ } -+ module = va_arg(ap, const char *); -+ } -+ va_end(ap); -+#endif -+ return loaded; -+} -+#endif -+ - #if !defined(_WIN32) - #ifdef _BSD - static int tun_open(char *ifname, int ifname_size) -@@ -1067,11 +1098,55 @@ - char *dev; - struct stat s; - -+#ifdef __FreeBSD__ -+ int i, kldtried = 0, enoentcount = 0, err = 0; -+ char dname[100]; -+#ifdef USE_DEVTAP -+ /* -+ * 5.x has /dev/tap, but that seems to just blindly increase its -+ * couter on every open() for some people(??), i.e. on every qemu run. -+ */ -+ i = -1; -+#else -+ i = 0; -+#endif -+ for (; i < 10; i++) { -+ if (i == -1) -+ strcpy(dname, "/dev/tap"); -+ else -+ snprintf(dname, sizeof dname, "%s%d", -+ "/dev/tap", i); -+ fd = open(dname, O_RDWR); -+ if (fd >= 0) -+ break; -+ else if (errno == ENXIO || errno == ENOENT) { -+ if (i == 0 && !kldtried++) { -+ /* -+ * Attempt to load the tunnel interface KLD if it isn't loaded -+ * already. -+ */ -+ if (loadmodules(LOAD_VERBOSLY, "if_tap", NULL)) -+ i = -1; -+ continue; -+ } -+ if (errno != ENOENT || ++enoentcount > 3) { -+ err = errno; -+ break; -+ } -+ } else -+ err = errno; -+ } -+ if (fd < 0) { -+ fprintf(stderr, "warning: could not open %s (%s): no virtual network emulation\n", dname, strerror(err)); -+ return -1; -+ } -+#else - fd = open("/dev/tap", O_RDWR); - if (fd < 0) { -- fprintf(stderr, "warning: could not open /dev/tap: no virtual network emulation\n"); -+ fprintf(stderr, "warning: could not open /dev/tap (%s): no virtual network emulation\n", strerror(errno)); - return -1; - } -+#endif - - fstat(fd, &s); - dev = devname(s.st_rdev, S_IFCHR); diff --git a/emulators/qemu-devel/files/patch-fbsd b/emulators/qemu-devel/files/patch-fbsd deleted file mode 100644 index abb69f4ecdc5..000000000000 --- a/emulators/qemu-devel/files/patch-fbsd +++ /dev/null @@ -1,165 +0,0 @@ -Index: qemu/Makefile -@@ -13,7 +13,7 @@ - endif - DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 - --all: dyngen$(EXESUF) $(TOOLS) $(DOCS) -+all: bsd/libmath.a dyngen$(EXESUF) $(TOOLS) $(DOCS) - for d in $(TARGET_DIRS); do \ - $(MAKE) -C $$d $@ || exit 1 ; \ - done -@@ -21,10 +21,13 @@ - ifdef CONFIG_WIN32 - $(MAKE) -C kqemu -f Makefile.winnt - else -- $(MAKE) -C kqemu -+ ( cd kqemu && $(BSD_MAKE) -f Makefile.freebsd ) - endif - endif - -+bsd/libmath.a: -+ ( cd bsd ; $(BSD_MAKE) CC=$(CC) ) -+ - qemu-img$(EXESUF): qemu-img.c block.c block-cow.c block-qcow.c aes.c block-vmdk.c block-cloop.c block-dmg.c block-bochs.c block-vpc.c block-vvfat.c - $(CC) -DQEMU_TOOL $(CFLAGS) $(LDFLAGS) $(DEFINES) -o $@ $^ -lz $(LIBS) - -@@ -33,6 +36,7 @@ - - clean: - # avoid old build problems by removing potentially incorrect old files -+ ( cd bsd ; $(BSD_MAKE) clean ) - rm -f config.mak config.h op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h - rm -f *.o *.a $(TOOLS) dyngen$(EXESUF) TAGS *.pod *~ */*~ - $(MAKE) -C tests clean -@@ -40,7 +44,7 @@ - $(MAKE) -C $$d $@ || exit 1 ; \ - done - ifdef CONFIG_KQEMU -- $(MAKE) -C kqemu clean -+ cd kqemu && $(BSD_MAKE) -f Makefile.freebsd clean - endif - - distclean: clean -@@ -73,9 +77,6 @@ - for d in $(TARGET_DIRS); do \ - $(MAKE) -C $$d $@ || exit 1 ; \ - done --ifdef CONFIG_KQEMU -- cd kqemu ; ./install.sh --endif - - # various test targets - test speed test2: all -Index: qemu/Makefile.target -@@ -391,8 +391,8 @@ - VL_LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld - endif - --$(QEMU_SYSTEM): $(VL_OBJS) libqemu.a -- $(CC) $(VL_LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS) -+$(QEMU_SYSTEM): $(VL_OBJS) libqemu.a ../bsd/libmath.a -+ $(CC) $(VL_LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS) ../bsd/libmath.a - - cocoa.o: cocoa.m - $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $< -Index: qemu/fpu/softfloat-native.c -@@ -2,11 +2,15 @@ - context is supported */ - #include "softfloat.h" - #include <math.h> -+#if defined(__FreeBSD__) && __FreeBSD_version < 500000 -+#include <ieeefp.h> -+#endif - - void set_float_rounding_mode(int val STATUS_PARAM) - { - STATUS(float_rounding_mode) = val; --#if defined(_BSD) && !defined(__APPLE__) -+#if defined(_BSD) && !defined(__APPLE__) && \ -+ (defined(__FreeBSD__) && __FreeBSD_version < 500000) - fpsetround(val); - #elif defined(__arm__) - /* nothing to do */ -@@ -22,7 +26,7 @@ - } - #endif - --#if defined(_BSD) -+#if defined(_BSD) && !defined(__FreeBSD__) - #define lrint(d) ((int32_t)rint(d)) - #define llrint(d) ((int64_t)rint(d)) - #endif -Index: qemu/fpu/softfloat-native.h -@@ -1,7 +1,17 @@ - /* Native implementation of soft float functions */ - #include <math.h> --#if defined(_BSD) && !defined(__APPLE__) -+#if defined(_BSD) && !defined(__APPLE__) && \ -+ (!defined(__FreeBSD__) || __FreeBSD_version < 500000) - #include <ieeefp.h> -+#if defined(__FreeBSD__) -+#define isgreater(x, y) __builtin_isgreater((x), (y)) -+#define isgreaterequal(x, y) __builtin_isgreaterequal((x), (y)) -+#define isless(x, y) __builtin_isless((x), (y)) -+#define islessequal(x, y) __builtin_islessequal((x), (y)) -+#define islessgreater(x, y) __builtin_islessgreater((x), (y)) -+#define isunordered(x, y) __builtin_isunordered((x), (y)) -+long double fabsl(long double x); -+#endif - #else - #include <fenv.h> - #endif -@@ -33,12 +43,13 @@ - /*---------------------------------------------------------------------------- - | Software IEC/IEEE floating-point rounding mode. - *----------------------------------------------------------------------------*/ --#if defined(_BSD) && !defined(__APPLE__) -+#if defined(_BSD) && !defined(__APPLE__) && \ -+ (!defined(__FreeBSD__) || __FreeBSD_version < 500000) - enum { - float_round_nearest_even = FP_RN, -- float_round_down = FE_RM, -- float_round_up = FE_RP, -- float_round_to_zero = FE_RZ -+ float_round_down = FP_RM, -+ float_round_up = FP_RP, -+ float_round_to_zero = FP_RZ - }; - #elif defined(__arm__) - enum { -Index: qemu/fpu/softfloat.h -@@ -84,7 +84,8 @@ - #define FLOAT128 - #else - /* native float support */ --#if (defined(__i386__) || defined(__x86_64__)) && !defined(_BSD) -+#if (defined(__i386__) || defined(__x86_64__)) && \ -+ (!defined(_BSD) || defined(__FreeBSD__)) - #define FLOATX80 - #endif - #endif /* !CONFIG_SOFTFLOAT */ -Index: qemu/target-ppc/op_helper.c -@@ -303,6 +303,13 @@ - FT0 = sqrt(FT0); - } - -+#ifndef isnormal -+#define isnormal(x) \ -+ ((sizeof (x) == sizeof (float)) ? __isnormalf(x) \ -+ : (sizeof (x) == sizeof (double)) ? __isnormal(x) \ -+ : __isnormall(x)) -+#endif -+ - void do_fres (void) - { - union { -Index: qemu/x86_64.ld -@@ -2,7 +2,7 @@ - OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") - OUTPUT_ARCH(i386:x86-64) - ENTRY(_start) --SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib64"); -+SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/local/lib"); - SECTIONS - { - /* Read-only sections, merged into text segment: */ diff --git a/emulators/qemu-devel/files/patch-libmath b/emulators/qemu-devel/files/patch-libmath deleted file mode 100644 index d0c4cbaa363c..000000000000 --- a/emulators/qemu-devel/files/patch-libmath +++ /dev/null @@ -1,2524 +0,0 @@ -diff -Nru qemu-0.7.0/bsd.orig/Makefile qemu-0.7.0/bsd/Makefile ---- qemu-0.7.0/bsd.orig/Makefile Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/Makefile Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,32 @@ -+SRCS= ${MACHINE_ARCH}/e_atan2l.c \ -+ ${MACHINE_ARCH}/e_logl.S \ -+ ${MACHINE_ARCH}/e_powl.S \ -+ ${MACHINE_ARCH}/e_remainderl.S \ -+ ${MACHINE_ARCH}/e_sqrtl.c \ -+ ${MACHINE_ARCH}/s_ceill.S \ -+ ${MACHINE_ARCH}/s_cosl.S \ -+ ${MACHINE_ARCH}/s_floorl.S \ -+ ${MACHINE_ARCH}/s_isnormal.c \ -+ ${MACHINE_ARCH}/s_llrint.S \ -+ ${MACHINE_ARCH}/s_llrintf.S \ -+ ${MACHINE_ARCH}/s_llrintl.S \ -+ ${MACHINE_ARCH}/s_lrint.S \ -+ ${MACHINE_ARCH}/s_lrintf.S \ -+ ${MACHINE_ARCH}/s_lrintl.S \ -+ ${MACHINE_ARCH}/s_rintl.c \ -+ ${MACHINE_ARCH}/s_round.c \ -+ ${MACHINE_ARCH}/s_sinl.S \ -+ ${MACHINE_ARCH}/s_tanl.S -+ -+OBJS= ${SRCS:R:S/$/.o/} -+ -+CFLAGS= -O2 -Wall -I. -+ -+all: libmath.a -+ -+libmath.a: ${OBJS} -+ rm -f $@ -+ ${AR} rcs $@ ${OBJS:T} -+ -+clean: -+ rm -f ${OBJS:T} libmath.a -diff -Nru qemu-0.7.0/bsd.orig/amd64/e_atan2l.c qemu-0.7.0/bsd/amd64/e_atan2l.c ---- qemu-0.7.0/bsd.orig/amd64/e_atan2l.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/e_atan2l.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,20 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ */ -+ -+#include <sysdep.h> -+ -+long double -+__ieee754_atan2l (long double y, long double x) -+{ -+ long double res; -+ -+ asm ("fpatan" : "=t" (res) : "u" (y), "0" (x) : "st(1)"); -+ -+ return res; -+} -+ -+weak_alias(__ieee754_atan2l, atan2l) -diff -Nru qemu-0.7.0/bsd.orig/amd64/e_logl.S qemu-0.7.0/bsd/amd64/e_logl.S ---- qemu-0.7.0/bsd.orig/amd64/e_logl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/e_logl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,59 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ * Adapted for x86-64 by Andreas Jaeger <aj@suse.de>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+RCSID("$NetBSD: $") -+ -+ -+#ifdef __ELF__ -+ .section .rodata -+#else -+ .text -+#endif -+ .align ALIGNARG(4) -+ ASM_TYPE_DIRECTIVE(one,@object) -+one: .double 1.0 -+ ASM_SIZE_DIRECTIVE(one) -+ /* It is not important that this constant is precise. It is only -+ a value which is known to be on the safe side for using the -+ fyl2xp1 instruction. */ -+ ASM_TYPE_DIRECTIVE(limit,@object) -+limit: .double 0.29 -+ ASM_SIZE_DIRECTIVE(limit) -+ -+ -+#ifdef PIC -+#define MO(op) op##(%rip) -+#else -+#define MO(op) op -+#endif -+ -+ .text -+ENTRY(__ieee754_logl) -+ fldln2 // log(2) -+ fldt 8(%rsp) // x : log(2) -+ fld %st // x : x : log(2) -+ fsubl MO(one) // x-1 : x : log(2) -+ fld %st // x-1 : x-1 : x : log(2) -+ fabs // |x-1| : x-1 : x : log(2) -+ fcompl MO(limit) // x-1 : x : log(2) -+ fnstsw // x-1 : x : log(2) -+ andb $0x45, %ah -+ jz 2f -+ fstp %st(1) // x-1 : log(2) -+ fyl2xp1 // log(x) -+ ret -+ -+2: fstp %st(0) // x : log(2) -+ fyl2x // log(x) -+ ret -+END (__ieee754_logl) -+ -+weak_alias(__ieee754_logl,logl) -diff -Nru qemu-0.7.0/bsd.orig/amd64/e_powl.S qemu-0.7.0/bsd/amd64/e_powl.S ---- qemu-0.7.0/bsd.orig/amd64/e_powl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/e_powl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,341 @@ -+/* ix87 specific implementation of pow function. -+ Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+#ifdef __ELF__ -+ .section .rodata -+#else -+ .text -+#endif -+ -+ .align ALIGNARG(4) -+ ASM_TYPE_DIRECTIVE(infinity,@object) -+inf_zero: -+infinity: -+ .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f -+ ASM_SIZE_DIRECTIVE(infinity) -+ ASM_TYPE_DIRECTIVE(zero,@object) -+zero: .double 0.0 -+ ASM_SIZE_DIRECTIVE(zero) -+ ASM_TYPE_DIRECTIVE(minf_mzero,@object) -+minf_mzero: -+minfinity: -+ .byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff -+mzero: -+ .byte 0, 0, 0, 0, 0, 0, 0, 0x80 -+ ASM_SIZE_DIRECTIVE(minf_mzero) -+ ASM_TYPE_DIRECTIVE(one,@object) -+one: .double 1.0 -+ ASM_SIZE_DIRECTIVE(one) -+ ASM_TYPE_DIRECTIVE(limit,@object) -+limit: .double 0.29 -+ ASM_SIZE_DIRECTIVE(limit) -+ ASM_TYPE_DIRECTIVE(p63,@object) -+p63: -+ .byte 0, 0, 0, 0, 0, 0, 0xe0, 0x43 -+ ASM_SIZE_DIRECTIVE(p63) -+ -+#ifdef PIC -+#define MO(op) op##(%rip) -+#else -+#define MO(op) op -+#endif -+ -+ .text -+ENTRY(__ieee754_powl) -+ fldt 24(%rsp) // y -+ fxam -+ -+ -+ fnstsw -+ movb %ah, %dl -+ andb $0x45, %ah -+ cmpb $0x40, %ah // is y == 0 ? -+ je 11f -+ -+ cmpb $0x05, %ah // is y == ħinf ? -+ je 12f -+ -+ cmpb $0x01, %ah // is y == NaN ? -+ je 30f -+ -+ fldt 8(%rsp) // x : y -+ -+ fxam -+ fnstsw -+ movb %ah, %dh -+ andb $0x45, %ah -+ cmpb $0x40, %ah -+ je 20f // x is ħ0 -+ -+ cmpb $0x05, %ah -+ je 15f // x is ħinf -+ -+ fxch // y : x -+ -+ /* fistpll raises invalid exception for |y| >= 1L<<63. */ -+ fldl MO(p63) // 1L<<63 : y : x -+ fld %st(1) // y : 1L<<63 : y : x -+ fabs // |y| : 1L<<63 : y : x -+ fcomip %st(1), %st // 1L<<63 : y : x -+ fstp %st(0) // y : x -+ jnc 2f -+ -+ /* First see whether `y' is a natural number. In this case we -+ can use a more precise algorithm. */ -+ fld %st // y : y : x -+ fistpll -8(%rsp) // y : x -+ fildll -8(%rsp) // int(y) : y : x -+ fucomip %st(1),%st // y : x -+ jne 2f -+ -+ /* OK, we have an integer value for y. */ -+ mov -8(%rsp),%eax -+ mov -4(%rsp),%edx -+ orl $0, %edx -+ fstp %st(0) // x -+ jns 4f // y >= 0, jump -+ fdivrl MO(one) // 1/x (now referred to as x) -+ negl %eax -+ adcl $0, %edx -+ negl %edx -+4: fldl MO(one) // 1 : x -+ fxch -+ -+6: shrdl $1, %edx, %eax -+ jnc 5f -+ fxch -+ fmul %st(1) // x : ST*x -+ fxch -+5: fmul %st(0), %st // x*x : ST*x -+ shrl $1, %edx -+ movl %eax, %ecx -+ orl %edx, %ecx -+ jnz 6b -+ fstp %st(0) // ST*x -+ ret -+ -+ /* y is ħNAN */ -+30: fldt 8(%rsp) // x : y -+ fldl MO(one) // 1.0 : x : y -+ fucomip %st(1),%st // x : y -+ je 31f -+ fxch // y : x -+31: fstp %st(1) -+ ret -+ -+ .align ALIGNARG(4) -+2: /* y is a real number. */ -+ fxch // x : y -+ fldl MO(one) // 1.0 : x : y -+ fld %st(1) // x : 1.0 : x : y -+ fsub %st(1) // x-1 : 1.0 : x : y -+ fabs // |x-1| : 1.0 : x : y -+ fcompl MO(limit) // 1.0 : x : y -+ fnstsw -+ fxch // x : 1.0 : y -+ test $4500,%eax -+ jz 7f -+ fsub %st(1) // x-1 : 1.0 : y -+ fyl2xp1 // log2(x) : y -+ jmp 8f -+ -+7: fyl2x // log2(x) : y -+8: fmul %st(1) // y*log2(x) : y -+ fxam -+ fnstsw -+ andb $0x45, %ah -+ cmpb $0x05, %ah // is y*log2(x) == ħinf ? -+ je 28f -+ fst %st(1) // y*log2(x) : y*log2(x) -+ frndint // int(y*log2(x)) : y*log2(x) -+ fsubr %st, %st(1) // int(y*log2(x)) : fract(y*log2(x)) -+ fxch // fract(y*log2(x)) : int(y*log2(x)) -+ f2xm1 // 2^fract(y*log2(x))-1 : int(y*log2(x)) -+ faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) -+ fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x)) -+ fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) -+ ret -+ -+28: fstp %st(1) // y*log2(x) -+ fldl MO(one) // 1 : y*log2(x) -+ fscale // 2^(y*log2(x)) : y*log2(x) -+ fstp %st(1) // 2^(y*log2(x)) -+ ret -+ -+ // pow(x,ħ0) = 1 -+ .align ALIGNARG(4) -+11: fstp %st(0) // pop y -+ fldl MO(one) -+ ret -+ -+ // y == ħinf -+ .align ALIGNARG(4) -+12: fstp %st(0) // pop y -+ fldt 8(%rsp) // x -+ fabs -+ fcompl MO(one) // < 1, == 1, or > 1 -+ fnstsw -+ andb $0x45, %ah -+ cmpb $0x45, %ah -+ je 13f // jump if x is NaN -+ -+ cmpb $0x40, %ah -+ je 14f // jump if |x| == 1 -+ -+ shlb $1, %ah -+ xorb %ah, %dl -+ andl $2, %edx -+#ifdef PIC -+ lea inf_zero(%rip),%rcx -+ fldl (%rcx, %rdx, 4) -+#else -+ fldl inf_zero(,%rdx, 4) -+#endif -+ ret -+ -+ .align ALIGNARG(4) -+14: fldl MO(one) -+ ret -+ -+ .align ALIGNARG(4) -+13: fldt 8(%rsp) // load x == NaN -+ ret -+ -+ .align ALIGNARG(4) -+ // x is ħinf -+15: fstp %st(0) // y -+ testb $2, %dh -+ jz 16f // jump if x == +inf -+ -+ // We must find out whether y is an odd integer. -+ fld %st // y : y -+ fistpll -8(%rsp) // y -+ fildll -8(%rsp) // int(y) : y -+ fucomip %st(1),%st -+ ffreep %st // <empty> -+ jne 17f -+ -+ // OK, the value is an integer, but is it odd? -+ mov -8(%rsp), %eax -+ mov -4(%rsp), %edx -+ andb $1, %al -+ jz 18f // jump if not odd -+ // It's an odd integer. -+ shrl $31, %edx -+#ifdef PIC -+ lea minf_mzero(%rip),%rcx -+ fldl (%rcx, %rdx, 8) -+#else -+ fldl minf_mzero(,%rdx, 8) -+#endif -+ ret -+ -+ .align ALIGNARG(4) -+16: fcompl MO(zero) -+ fnstsw -+ shrl $5, %eax -+ andl $8, %eax -+#ifdef PIC -+ lea inf_zero(%rip),%rcx -+ fldl (%rcx, %rax, 1) -+#else -+ fldl inf_zero(,%rax, 1) -+#endif -+ ret -+ -+ .align ALIGNARG(4) -+17: shll $30, %edx // sign bit for y in right position -+18: shrl $31, %edx -+#ifdef PIC -+ lea inf_zero(%rip),%rcx -+ fldl (%rcx, %rdx, 8) -+#else -+ fldl inf_zero(,%rdx, 8) -+#endif -+ ret -+ -+ .align ALIGNARG(4) -+ // x is ħ0 -+20: fstp %st(0) // y -+ testb $2, %dl -+ jz 21f // y > 0 -+ -+ // x is ħ0 and y is < 0. We must find out whether y is an odd integer. -+ testb $2, %dh -+ jz 25f -+ -+ fld %st // y : y -+ fistpll -8(%rsp) // y -+ fildll -8(%rsp) // int(y) : y -+ fucomip %st(1),%st -+ ffreep %st // <empty> -+ jne 26f -+ -+ // OK, the value is an integer, but is it odd? -+ mov -8(%rsp),%eax -+ mov -4(%rsp),%edx -+ andb $1, %al -+ jz 27f // jump if not odd -+ // It's an odd integer. -+ // Raise divide-by-zero exception and get minus infinity value. -+ fldl MO(one) -+ fdivl MO(zero) -+ fchs -+ ret -+ -+25: fstp %st(0) -+26: -+27: // Raise divide-by-zero exception and get infinity value. -+ fldl MO(one) -+ fdivl MO(zero) -+ ret -+ -+ .align ALIGNARG(4) -+ // x is ħ0 and y is > 0. We must find out whether y is an odd integer. -+21: testb $2, %dh -+ jz 22f -+ -+ fld %st // y : y -+ fistpll -8(%rsp) // y -+ fildll -8(%rsp) // int(y) : y -+ fucomip %st(1),%st -+ ffreep %st // <empty> -+ jne 23f -+ -+ // OK, the value is an integer, but is it odd? -+ mov -8(%rsp),%eax -+ mov -4(%rsp),%edx -+ andb $1, %al -+ jz 24f // jump if not odd -+ // It's an odd integer. -+ fldl MO(mzero) -+ ret -+ -+22: fstp %st(0) -+23: -+24: fldl MO(zero) -+ ret -+ -+END(__ieee754_powl) -+ -+weak_alias(__ieee754_powl,powl) -diff -Nru qemu-0.7.0/bsd.orig/amd64/e_remainderl.S qemu-0.7.0/bsd/amd64/e_remainderl.S ---- qemu-0.7.0/bsd.orig/amd64/e_remainderl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/e_remainderl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,23 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ * Adapted for x86-64 by Andreas Jaeger <aj@suse.de>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+ENTRY(__ieee754_remainderl) -+ fldt 24(%rsp) -+ fldt 8(%rsp) -+1: fprem1 -+ fstsw %ax -+ testl $0x400,%eax -+ jnz 1b -+ fstp %st(1) -+ ret -+END (__ieee754_remainderl) -+ -+weak_alias(__ieee754_remainderl,remainderl) -diff -Nru qemu-0.7.0/bsd.orig/amd64/e_sqrtl.c qemu-0.7.0/bsd/amd64/e_sqrtl.c ---- qemu-0.7.0/bsd.orig/amd64/e_sqrtl.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/e_sqrtl.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,20 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ */ -+ -+#include <sysdep.h> -+ -+long double -+__ieee754_sqrtl (long double x) -+{ -+ long double res; -+ -+ asm ("fsqrt" : "=t" (res) : "0" (x)); -+ -+ return res; -+} -+ -+weak_alias(__ieee754_sqrtl,sqrtl) -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_ceill.S qemu-0.7.0/bsd/amd64/s_ceill.S ---- qemu-0.7.0/bsd.orig/amd64/s_ceill.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_ceill.S Fri Apr 29 02:22:18 2005 -@@ -0,0 +1,246 @@ -+/* -+ * ==================================================== -+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. -+ * -+ * Developed at SunPro, a Sun Microsystems, Inc. business. -+ * Permission to use, copy, modify, and distribute this -+ * software is freely granted, provided that this notice -+ * is preserved. -+ * ==================================================== -+ * -+ * From: @(#)s_ceil.c 5.1 93/09/24 -+ */ -+/* XXX: generated from src/lib/msun/src/s_ceill.c */ -+ -+#include <machine/asm.h> -+ -+__FBSDID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+ -+ .file "s_ceill.c" -+ .section .rodata.cst8,"aM",@progbits,8 -+ .p2align 3 -+.LC0: -+ .long 2281731484 -+ .long 2117592124 -+ .text -+ .p2align 4,,15 -+.globl ceill -+ .type ceill, @function -+ceill: -+.LFB17: -+ pushq %rbp -+.LCFI0: -+ pushq %rbx -+.LCFI1: -+ fldt 24(%rsp) -+ movq $0, -16(%rsp) -+ fld %st(0) -+ fstpt -40(%rsp) -+ movl -32(%rsp), %edi -+ movq -40(%rsp), %rsi -+ movl %edi, -16(%rsp) -+ movl -16(%rsp), %r11d -+ movq %rsi, -24(%rsp) -+ movl %r11d, %r10d -+ andl $32767, %r10d -+ leal -16383(%r10), %r8d -+ cmpl $30, %r8d -+ jg .L2 -+ testl %r8d, %r8d -+ js .L38 -+ movl -20(%rsp), %r9d -+ leal 1(%r8), %ecx -+ mov -24(%rsp), %eax -+ movl $4294967295, %ebp -+ movq %rsi, -40(%rsp) -+ movl %edi, -32(%rsp) -+ shrq %cl, %rbp -+ mov %r9d, %ebx -+ movq %rbx, %rdx -+ andq %rbp, %rdx -+ orq %rax, %rdx -+ fldt -40(%rsp) -+ je .L42 -+ ffreep %st(0) -+ testb $-128, -15(%rsp) -+ jne .L12 -+ movl $31, %ecx -+ movl $1, %eax -+ subl %r8d, %ecx -+ salq %cl, %rax -+ addl %eax, %r9d -+ mov %r9d, %eax -+ cmpq %rbx, %rax -+ jae .L32 -+ leal 1(%r10), %edx -+ movl %r11d, %eax -+ orl $-2147483648, %r9d -+ andw $-32768, %ax -+ andw $32767, %dx -+ orl %edx, %eax -+ movw %ax, -16(%rsp) -+.L32: -+ movl %r9d, -20(%rsp) -+.L12: -+ faddl .LC0(%rip) -+ fldz -+ fxch %st(1) -+ fucomip %st(1), %st -+ fstp %st(0) -+ jbe .L31 -+ movl %ebp, %eax -+ movl $0, -24(%rsp) -+ notl %eax -+ andl %eax, %r9d -+ movl %r9d, -20(%rsp) -+ .p2align 4,,7 -+.L31: -+ movq -24(%rsp), %rsi -+ movl -16(%rsp), %edi -+ movq %rsi, -40(%rsp) -+ movl %edi, -32(%rsp) -+ fldt -40(%rsp) -+ popq %rbx -+ popq %rbp -+ ret -+ .p2align 4,,7 -+.L2: -+ cmpl $62, %r8d -+ jle .L45 -+.L44: -+ ffreep %st(0) -+.L17: -+ movq %rsi, -40(%rsp) -+ movl %edi, -32(%rsp) -+ fldt -40(%rsp) -+ popq %rbx -+ popq %rbp -+ ret -+ .p2align 4,,7 -+.L45: -+ movl -24(%rsp), %edx -+ leal 1(%r8), %ecx -+ movq $-1, %rbx -+ movq %rsi, -40(%rsp) -+ movl %edi, -32(%rsp) -+ shrq %cl, %rbx -+ mov %edx, %r9d -+ testq %rbx, %r9 -+ fldt -40(%rsp) -+ je .L42 -+ ffreep %st(0) -+ testb $-128, -15(%rsp) -+ jne .L20 -+ cmpl $31, %r8d -+ je .L36 -+ movl $63, %ecx -+ movl $1, %eax -+ subl %r8d, %ecx -+ salq %cl, %rax -+ leal (%rdx,%rax), %eax -+ movl %eax, -24(%rsp) -+ mov %eax, %eax -+ cmpq %r9, %rax -+ jae .L20 -+.L36: -+ movl -20(%rsp), %eax -+ leal 1(%rax), %ecx -+ cmpl %eax, %ecx -+ jae .L34 -+ leal 1(%r10), %edx -+ movl %r11d, %eax -+ orl $-2147483648, %ecx -+ andw $-32768, %ax -+ andw $32767, %dx -+ orl %edx, %eax -+ movw %ax, -16(%rsp) -+.L34: -+ movl %ecx, -20(%rsp) -+ .p2align 4,,7 -+.L20: -+ faddl .LC0(%rip) -+ fldz -+ fxch %st(1) -+ fucomip %st(1), %st -+ fstp %st(0) -+ jbe .L31 -+ movl %ebx, %eax -+ notl %eax -+ andl %eax, -24(%rsp) -+ jmp .L31 -+ .p2align 4,,7 -+.L42: -+ fstp %st(1) -+ popq %rbx -+ popq %rbp -+ ret -+ .p2align 4,,7 -+.L38: -+ fldl .LC0(%rip) -+ faddp %st, %st(1) -+ fldz -+ fxch %st(1) -+ fucomip %st(1), %st -+ jbe .L44 -+ testl %r10d, %r10d -+ jle .L39 -+.L7: -+ movabsq $-9223372036854775808, %rsi -+ movl $16383, %edi -+ testb $-128, -15(%rsp) -+ movq %rsi, -40(%rsp) -+ movl %edi, -32(%rsp) -+ fldt -40(%rsp) -+ fcmovne %st(1), %st -+ fstp %st(1) -+ fstpt -40(%rsp) -+ movq -40(%rsp), %rsi -+ movl -32(%rsp), %edi -+ movq %rsi, -24(%rsp) -+ movl %edi, -16(%rsp) -+ jmp .L17 -+.L39: -+ movl -24(%rsp), %eax -+ orl -20(%rsp), %eax -+ je .L44 -+ jmp .L7 -+.LFE17: -+ .size ceill, .-ceill -+ .section .eh_frame,"a",@progbits -+.Lframe1: -+ .long .LECIE1-.LSCIE1 -+.LSCIE1: -+ .long 0x0 -+ .byte 0x1 -+ .string "" -+ .uleb128 0x1 -+ .sleb128 -8 -+ .byte 0x10 -+ .byte 0xc -+ .uleb128 0x7 -+ .uleb128 0x8 -+ .byte 0x90 -+ .uleb128 0x1 -+ .p2align 3 -+.LECIE1: -+.LSFDE1: -+ .long .LEFDE1-.LASFDE1 -+.LASFDE1: -+ .long .LASFDE1-.Lframe1 -+ .quad .LFB17 -+ .quad .LFE17-.LFB17 -+ .byte 0x4 -+ .long .LCFI0-.LFB17 -+ .byte 0xe -+ .uleb128 0x10 -+ .byte 0x4 -+ .long .LCFI1-.LCFI0 -+ .byte 0xe -+ .uleb128 0x18 -+ .byte 0x83 -+ .uleb128 0x3 -+ .byte 0x86 -+ .uleb128 0x2 -+ .p2align 3 -+.LEFDE1: -+ .ident "GCC: (GNU) 3.4.4 [FreeBSD] 20050421" -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_cosl.S qemu-0.7.0/bsd/amd64/s_cosl.S ---- qemu-0.7.0/bsd.orig/amd64/s_cosl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_cosl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,33 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ * Adapted for x86-64 by Andreas Jaeger <aj@suse.de>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+RCSID("$NetBSD: $") -+ -+ENTRY(__cosl) -+ fldt 8(%rsp) -+ fcos -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 1f -+ ret -+ .align ALIGNARG(4) -+1: fldpi -+ fadd %st(0) -+ fxch %st(1) -+2: fprem1 -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 2b -+ fstp %st(1) -+ fcos -+ ret -+END (__cosl) -+weak_alias (__cosl, cosl) -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_floorl.S qemu-0.7.0/bsd/amd64/s_floorl.S ---- qemu-0.7.0/bsd.orig/amd64/s_floorl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_floorl.S Fri Apr 29 02:24:32 2005 -@@ -0,0 +1,247 @@ -+/* -+ * ==================================================== -+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. -+ * -+ * Developed at SunPro, a Sun Microsystems, Inc. business. -+ * Permission to use, copy, modify, and distribute this -+ * software is freely granted, provided that this notice -+ * is preserved. -+ * ==================================================== -+ * -+ * From: @(#)s_floor.c 5.1 93/09/24 -+ */ -+/* XXX: generated from src/lib/msun/src/s_floorl.c */ -+ -+#include <machine/asm.h> -+ -+__FBSDID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+ -+ .file "s_floorl.c" -+ .section .rodata.cst8,"aM",@progbits,8 -+ .p2align 3 -+.LC0: -+ .long 2281731484 -+ .long 2117592124 -+ .section .rodata.cst4,"aM",@progbits,4 -+ .p2align 2 -+.LC2: -+ .long 3212836864 -+ .text -+ .p2align 4,,15 -+.globl floorl -+ .type floorl, @function -+floorl: -+.LFB17: -+ pushq %rbp -+.LCFI0: -+ pushq %rbx -+.LCFI1: -+ fldt 24(%rsp) -+ movq $0, -16(%rsp) -+ fld %st(0) -+ fstpt -40(%rsp) -+ movl -32(%rsp), %edi -+ movq -40(%rsp), %rsi -+ movl %edi, -16(%rsp) -+ movl -16(%rsp), %r11d -+ movq %rsi, -24(%rsp) -+ movl %r11d, %r10d -+ andl $32767, %r10d -+ leal -16383(%r10), %r8d -+ cmpl $30, %r8d -+ jg .L2 -+ testl %r8d, %r8d -+ js .L38 -+ movl -20(%rsp), %r9d -+ leal 1(%r8), %ecx -+ mov -24(%rsp), %eax -+ movl $4294967295, %ebp -+ movq %rsi, -40(%rsp) -+ movl %edi, -32(%rsp) -+ shrq %cl, %rbp -+ mov %r9d, %ebx -+ movq %rbx, %rdx -+ andq %rbp, %rdx -+ orq %rax, %rdx -+ fldt -40(%rsp) -+ je .L42 -+ ffreep %st(0) -+ testb $-128, -15(%rsp) -+ je .L12 -+ movl $31, %ecx -+ movl $1, %eax -+ subl %r8d, %ecx -+ salq %cl, %rax -+ addl %eax, %r9d -+ mov %r9d, %eax -+ cmpq %rbx, %rax -+ jae .L32 -+ leal 1(%r10), %edx -+ movl %r11d, %eax -+ orl $-2147483648, %r9d -+ andw $-32768, %ax -+ andw $32767, %dx -+ orl %edx, %eax -+ movw %ax, -16(%rsp) -+.L32: -+ movl %r9d, -20(%rsp) -+.L12: -+ faddl .LC0(%rip) -+ fldz -+ fxch %st(1) -+ fucomip %st(1), %st -+ fstp %st(0) -+ jbe .L31 -+ movl %ebp, %eax -+ movl $0, -24(%rsp) -+ notl %eax -+ andl %eax, %r9d -+ movl %r9d, -20(%rsp) -+ .p2align 4,,7 -+.L31: -+ movq -24(%rsp), %rsi -+ movl -16(%rsp), %edi -+ movq %rsi, -40(%rsp) -+ movl %edi, -32(%rsp) -+ fldt -40(%rsp) -+ popq %rbx -+ popq %rbp -+ ret -+ .p2align 4,,7 -+.L2: -+ cmpl $62, %r8d -+ jle .L45 -+.L44: -+ ffreep %st(0) -+.L17: -+ movq %rsi, -40(%rsp) -+ movl %edi, -32(%rsp) -+ fldt -40(%rsp) -+ popq %rbx -+ popq %rbp -+ ret -+ .p2align 4,,7 -+.L45: -+ movl -24(%rsp), %edx -+ leal 1(%r8), %ecx -+ movq $-1, %rbx -+ movq %rsi, -40(%rsp) -+ movl %edi, -32(%rsp) -+ shrq %cl, %rbx -+ mov %edx, %r9d -+ testq %rbx, %r9 -+ fldt -40(%rsp) -+ je .L42 -+ ffreep %st(0) -+ testb $-128, -15(%rsp) -+ je .L20 -+ cmpl $31, %r8d -+ je .L36 -+ movl $63, %ecx -+ movl $1, %eax -+ subl %r8d, %ecx -+ salq %cl, %rax -+ leal (%rdx,%rax), %eax -+ movl %eax, -24(%rsp) -+ mov %eax, %eax -+ cmpq %r9, %rax -+ jae .L20 -+.L36: -+ movl -20(%rsp), %eax -+ leal 1(%rax), %ecx -+ cmpl %eax, %ecx -+ jae .L34 -+ leal 1(%r10), %edx -+ movl %r11d, %eax -+ orl $-2147483648, %ecx -+ andw $-32768, %ax -+ andw $32767, %dx -+ orl %edx, %eax -+ movw %ax, -16(%rsp) -+.L34: -+ movl %ecx, -20(%rsp) -+ .p2align 4,,7 -+.L20: -+ faddl .LC0(%rip) -+ fldz -+ fxch %st(1) -+ fucomip %st(1), %st -+ fstp %st(0) -+ jbe .L31 -+ movl %ebx, %eax -+ notl %eax -+ andl %eax, -24(%rsp) -+ jmp .L31 -+ .p2align 4,,7 -+.L42: -+ fstp %st(1) -+ popq %rbx -+ popq %rbp -+ ret -+ .p2align 4,,7 -+.L38: -+ fldl .LC0(%rip) -+ faddp %st, %st(1) -+ fldz -+ fxch %st(1) -+ fucomip %st(1), %st -+ jbe .L44 -+ testl %r10d, %r10d -+ jle .L39 -+.L7: -+ testb $-128, -15(%rsp) -+ je .L9 -+ ffreep %st(0) -+ flds .LC2(%rip) -+.L9: -+ fstpt -40(%rsp) -+ movq -40(%rsp), %rsi -+ movl -32(%rsp), %edi -+ movq %rsi, -24(%rsp) -+ movl %edi, -16(%rsp) -+ jmp .L17 -+.L39: -+ movl -24(%rsp), %eax -+ orl -20(%rsp), %eax -+ je .L44 -+ jmp .L7 -+.LFE17: -+ .size floorl, .-floorl -+ .section .eh_frame,"a",@progbits -+.Lframe1: -+ .long .LECIE1-.LSCIE1 -+.LSCIE1: -+ .long 0x0 -+ .byte 0x1 -+ .string "" -+ .uleb128 0x1 -+ .sleb128 -8 -+ .byte 0x10 -+ .byte 0xc -+ .uleb128 0x7 -+ .uleb128 0x8 -+ .byte 0x90 -+ .uleb128 0x1 -+ .p2align 3 -+.LECIE1: -+.LSFDE1: -+ .long .LEFDE1-.LASFDE1 -+.LASFDE1: -+ .long .LASFDE1-.Lframe1 -+ .quad .LFB17 -+ .quad .LFE17-.LFB17 -+ .byte 0x4 -+ .long .LCFI0-.LFB17 -+ .byte 0xe -+ .uleb128 0x10 -+ .byte 0x4 -+ .long .LCFI1-.LCFI0 -+ .byte 0xe -+ .uleb128 0x18 -+ .byte 0x83 -+ .uleb128 0x3 -+ .byte 0x86 -+ .uleb128 0x2 -+ .p2align 3 -+.LEFDE1: -+ .ident "GCC: (GNU) 3.4.4 [FreeBSD] 20050421" -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_isnormal.c qemu-0.7.0/bsd/amd64/s_isnormal.c ---- qemu-0.7.0/bsd.orig/amd64/s_isnormal.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_isnormal.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,85 @@ -+/*- -+ * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org> -+ * Copyright (c) 2002-2004 David Schultz <das@FreeBSD.ORG> -+ * All rights reserved. -+ * -+ * 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 AND CONTRIBUTORS ``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. -+ * -+ * $FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $ -+ */ -+ -+union IEEEf2bits { -+ float f; -+ struct { -+ unsigned int man :23; -+ unsigned int exp :8; -+ unsigned int sign :1; -+ } bits; -+}; -+ -+union IEEEd2bits { -+ double d; -+ struct { -+ unsigned int manl :32; -+ unsigned int manh :20; -+ unsigned int exp :11; -+ unsigned int sign :1; -+ } bits; -+}; -+ -+union IEEEl2bits { -+ long double e; -+ struct { -+ unsigned int manl :32; -+ unsigned int manh :32; -+ unsigned int exp :15; -+ unsigned int sign :1; -+ unsigned int junk :16; -+ } bits; -+}; -+ -+int -+__isnormal(double d) -+{ -+ union IEEEd2bits u; -+ -+ u.d = d; -+ return (u.bits.exp != 0 && u.bits.exp != 2047); -+} -+ -+int -+__isnormalf(float f) -+{ -+ union IEEEf2bits u; -+ -+ u.f = f; -+ return (u.bits.exp != 0 && u.bits.exp != 255); -+} -+ -+int -+__isnormall(long double e) -+{ -+ union IEEEl2bits u; -+ -+ u.e = e; -+ return (u.bits.exp != 0 && u.bits.exp != 32767); -+} -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_llrint.S qemu-0.7.0/bsd/amd64/s_llrint.S ---- qemu-0.7.0/bsd.orig/amd64/s_llrint.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_llrint.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,6 @@ -+#include <machine/asm.h> -+__FBSDID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+ -+/* sizeof(long) == sizeof(long long) */ -+#define fn llrint -+#include "s_lrint.S" -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_llrintf.S qemu-0.7.0/bsd/amd64/s_llrintf.S ---- qemu-0.7.0/bsd.orig/amd64/s_llrintf.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_llrintf.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,6 @@ -+#include <machine/asm.h> -+__FBSDID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+ -+/* sizeof(long) == sizeof(long long) */ -+#define fn llrintf -+#include "s_lrintf.S" -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_llrintl.S qemu-0.7.0/bsd/amd64/s_llrintl.S ---- qemu-0.7.0/bsd.orig/amd64/s_llrintl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_llrintl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,35 @@ -+/* Round argument to nearest integral value according to current rounding -+ direction. -+ Copyright (C) 1997, 2002 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+ .text -+ENTRY(__llrintl) -+ fldt 8(%rsp) -+ fistpll -8(%rsp) -+ fwait -+ movq -8(%rsp),%rax -+ ret -+END(__llrintl) -+weak_alias (__llrintl, llrintl) -+strong_alias (__llrintl, __lrintl) -+weak_alias (__llrintl, lrintl) -+ -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_lrint.S qemu-0.7.0/bsd/amd64/s_lrint.S ---- qemu-0.7.0/bsd.orig/amd64/s_lrint.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_lrint.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,36 @@ -+/*- -+ * Copyright (c) 2005 David Schultz <das@FreeBSD.ORG> -+ * All rights reserved. -+ * -+ * 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 AND CONTRIBUTORS ``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. -+ */ -+ -+#include <machine/asm.h> -+ -+#ifndef fn -+__FBSDID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+#define fn lrint -+#endif -+ -+ENTRY(fn) -+ cvtsd2si %xmm0, %rax -+ ret -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_lrintf.S qemu-0.7.0/bsd/amd64/s_lrintf.S ---- qemu-0.7.0/bsd.orig/amd64/s_lrintf.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_lrintf.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,36 @@ -+/*- -+ * Copyright (c) 2005 David Schultz <das@FreeBSD.ORG> -+ * All rights reserved. -+ * -+ * 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 AND CONTRIBUTORS ``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. -+ */ -+ -+#include <machine/asm.h> -+ -+#ifndef fn -+__FBSDID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+#define fn lrintf -+#endif -+ -+ENTRY(fn) -+ cvtss2si %xmm0, %rax -+ ret -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_lrintl.S qemu-0.7.0/bsd/amd64/s_lrintl.S ---- qemu-0.7.0/bsd.orig/amd64/s_lrintl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_lrintl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1 @@ -+/* Not needed, see s_llrintl.S. */ -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_rintl.c qemu-0.7.0/bsd/amd64/s_rintl.c ---- qemu-0.7.0/bsd.orig/amd64/s_rintl.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_rintl.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,18 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Changes for long double by Ulrich Drepper <drepper@cygnus.com> -+ * Public domain. -+ */ -+ -+#include <sysdep.h> -+ -+long double -+__rintl (long double x) -+{ -+ long double res; -+ -+ asm ("frndint" : "=t" (res) : "0" (x)); -+ return res; -+} -+ -+weak_alias (__rintl, rintl) -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_round.c qemu-0.7.0/bsd/amd64/s_round.c ---- qemu-0.7.0/bsd.orig/amd64/s_round.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_round.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,51 @@ -+/*- -+ * Copyright (c) 2003, Steven G. Kargl -+ * All rights reserved. -+ * -+ * 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 unmodified, 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 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. -+ */ -+ -+#include <sys/cdefs.h> -+__FBSDID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $"); -+ -+#include <math.h> -+ -+double -+round(double x) -+{ -+ double t; -+ -+ if (!isfinite(x)) -+ return (x); -+ -+ if (x >= 0.0) { -+ t = ceil(x); -+ if (t - x > 0.5) -+ t -= 1.0; -+ return (t); -+ } else { -+ t = ceil(-x); -+ if (t + x > 0.5) -+ t -= 1.0; -+ return (-t); -+ } -+} -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_sinl.S qemu-0.7.0/bsd/amd64/s_sinl.S ---- qemu-0.7.0/bsd.orig/amd64/s_sinl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_sinl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,31 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ * Adapted for x86-64 by Andreas Jaeger <aj@suse.de>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+ENTRY(__sinl) -+ fldt 8(%rsp) -+ fsin -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 1f -+ ret -+ .align ALIGNARG(4) -+1: fldpi -+ fadd %st(0) -+ fxch %st(1) -+2: fprem1 -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 2b -+ fstp %st(1) -+ fsin -+ ret -+END (__sinl) -+weak_alias (__sinl, sinl) -diff -Nru qemu-0.7.0/bsd.orig/amd64/s_tanl.S qemu-0.7.0/bsd/amd64/s_tanl.S ---- qemu-0.7.0/bsd.orig/amd64/s_tanl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/amd64/s_tanl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,34 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ * Adapted for x86-64 by Andreas Jaeger <aj@suse.de>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+RCSID("$NetBSD: $") -+ -+ENTRY(__tanl) -+ fldt 8(%rsp) -+ fptan -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 1f -+ fstp %st(0) -+ ret -+1: fldpi -+ fadd %st(0) -+ fxch %st(1) -+2: fprem1 -+ fstsw %ax -+ testl $0x400,%eax -+ jnz 2b -+ fstp %st(1) -+ fptan -+ fstp %st(0) -+ ret -+END (__tanl) -+weak_alias (__tanl, tanl) -diff -Nru qemu-0.7.0/bsd.orig/i386/e_atan2l.c qemu-0.7.0/bsd/i386/e_atan2l.c ---- qemu-0.7.0/bsd.orig/i386/e_atan2l.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/e_atan2l.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,20 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ */ -+ -+#include <sysdep.h> -+ -+long double -+__ieee754_atan2l (long double y, long double x) -+{ -+ long double res; -+ -+ asm ("fpatan" : "=t" (res) : "u" (y), "0" (x) : "st(1)"); -+ -+ return res; -+} -+ -+weak_alias(__ieee754_atan2l, atan2l) -diff -Nru qemu-0.7.0/bsd.orig/i386/e_logl.S qemu-0.7.0/bsd/i386/e_logl.S ---- qemu-0.7.0/bsd.orig/i386/e_logl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/e_logl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,63 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+RCSID("$NetBSD: $") -+ -+ -+#ifdef __ELF__ -+ .section .rodata -+#else -+ .text -+#endif -+ .align ALIGNARG(4) -+ ASM_TYPE_DIRECTIVE(one,@object) -+one: .double 1.0 -+ ASM_SIZE_DIRECTIVE(one) -+ /* It is not important that this constant is precise. It is only -+ a value which is known to be on the safe side for using the -+ fyl2xp1 instruction. */ -+ ASM_TYPE_DIRECTIVE(limit,@object) -+limit: .double 0.29 -+ ASM_SIZE_DIRECTIVE(limit) -+ -+ -+#ifdef PIC -+#define MO(op) op##@GOTOFF(%edx) -+#else -+#define MO(op) op -+#endif -+ -+ .text -+ENTRY(__ieee754_logl) -+ fldln2 // log(2) -+ fldt 4(%esp) // x : log(2) -+#ifdef PIC -+ call 1f -+1: popl %edx -+ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx -+#endif -+ fld %st // x : x : log(2) -+ fsubl MO(one) // x-1 : x : log(2) -+ fld %st // x-1 : x-1 : x : log(2) -+ fabs // |x-1| : x-1 : x : log(2) -+ fcompl MO(limit) // x-1 : x : log(2) -+ fnstsw // x-1 : x : log(2) -+ andb $0x45, %ah -+ jz 2f -+ fstp %st(1) // x-1 : log(2) -+ fyl2xp1 // log(x) -+ ret -+ -+2: fstp %st(0) // x : log(2) -+ fyl2x // log(x) -+ ret -+END (__ieee754_logl) -+ -+weak_alias(__ieee754_logl,logl) -diff -Nru qemu-0.7.0/bsd.orig/i386/e_powl.S qemu-0.7.0/bsd/i386/e_powl.S ---- qemu-0.7.0/bsd.orig/i386/e_powl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/e_powl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,341 @@ -+/* ix87 specific implementation of pow function. -+ Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004 -+ Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+#ifdef __ELF__ -+ .section .rodata -+#else -+ .text -+#endif -+ -+ .align ALIGNARG(4) -+ ASM_TYPE_DIRECTIVE(infinity,@object) -+inf_zero: -+infinity: -+ .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f -+ ASM_SIZE_DIRECTIVE(infinity) -+ ASM_TYPE_DIRECTIVE(zero,@object) -+zero: .double 0.0 -+ ASM_SIZE_DIRECTIVE(zero) -+ ASM_TYPE_DIRECTIVE(minf_mzero,@object) -+minf_mzero: -+minfinity: -+ .byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff -+mzero: -+ .byte 0, 0, 0, 0, 0, 0, 0, 0x80 -+ ASM_SIZE_DIRECTIVE(minf_mzero) -+ ASM_TYPE_DIRECTIVE(one,@object) -+one: .double 1.0 -+ ASM_SIZE_DIRECTIVE(one) -+ ASM_TYPE_DIRECTIVE(limit,@object) -+limit: .double 0.29 -+ ASM_SIZE_DIRECTIVE(limit) -+ ASM_TYPE_DIRECTIVE(p63,@object) -+p63: .byte 0, 0, 0, 0, 0, 0, 0xe0, 0x43 -+ ASM_SIZE_DIRECTIVE(p63) -+ -+#ifdef PIC -+#define MO(op) op##@GOTOFF(%ecx) -+#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) -+#else -+#define MO(op) op -+#define MOX(op,x,f) op(,x,f) -+#endif -+ -+ .text -+ENTRY(__ieee754_powl) -+ fldt 16(%esp) // y -+ fxam -+ -+#ifdef PIC -+ call 1f -+1: popl %ecx -+ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx -+#endif -+ -+ fnstsw -+ movb %ah, %dl -+ andb $0x45, %ah -+ cmpb $0x40, %ah // is y == 0 ? -+ je 11f -+ -+ cmpb $0x05, %ah // is y == ħinf ? -+ je 12f -+ -+ cmpb $0x01, %ah // is y == NaN ? -+ je 30f -+ -+ fldt 4(%esp) // x : y -+ -+ subl $8,%esp -+ -+ fxam -+ fnstsw -+ movb %ah, %dh -+ andb $0x45, %ah -+ cmpb $0x40, %ah -+ je 20f // x is ħ0 -+ -+ cmpb $0x05, %ah -+ je 15f // x is ħinf -+ -+ fxch // y : x -+ -+ /* fistpll raises invalid exception for |y| >= 1L<<63. */ -+ fld %st // y : y : x -+ fabs // |y| : y : x -+ fcompl MO(p63) // y : x -+ fnstsw -+ sahf -+ jnc 2f -+ -+ /* First see whether `y' is a natural number. In this case we -+ can use a more precise algorithm. */ -+ fld %st // y : y : x -+ fistpll (%esp) // y : x -+ fildll (%esp) // int(y) : y : x -+ fucomp %st(1) // y : x -+ fnstsw -+ sahf -+ jne 2f -+ -+ /* OK, we have an integer value for y. */ -+ popl %eax -+ popl %edx -+ orl $0, %edx -+ fstp %st(0) // x -+ jns 4f // y >= 0, jump -+ fdivrl MO(one) // 1/x (now referred to as x) -+ negl %eax -+ adcl $0, %edx -+ negl %edx -+4: fldl MO(one) // 1 : x -+ fxch -+ -+6: shrdl $1, %edx, %eax -+ jnc 5f -+ fxch -+ fmul %st(1) // x : ST*x -+ fxch -+5: fmul %st(0), %st // x*x : ST*x -+ shrl $1, %edx -+ movl %eax, %ecx -+ orl %edx, %ecx -+ jnz 6b -+ fstp %st(0) // ST*x -+ ret -+ -+ /* y is ħNAN */ -+30: fldt 4(%esp) // x : y -+ fldl MO(one) // 1.0 : x : y -+ fucomp %st(1) // x : y -+ fnstsw -+ sahf -+ je 31f -+ fxch // y : x -+31: fstp %st(1) -+ ret -+ -+ .align ALIGNARG(4) -+2: /* y is a real number. */ -+ fxch // x : y -+ fldl MO(one) // 1.0 : x : y -+ fld %st(1) // x : 1.0 : x : y -+ fsub %st(1) // x-1 : 1.0 : x : y -+ fabs // |x-1| : 1.0 : x : y -+ fcompl MO(limit) // 1.0 : x : y -+ fnstsw -+ fxch // x : 1.0 : y -+ sahf -+ ja 7f -+ fsub %st(1) // x-1 : 1.0 : y -+ fyl2xp1 // log2(x) : y -+ jmp 8f -+ -+7: fyl2x // log2(x) : y -+8: fmul %st(1) // y*log2(x) : y -+ fxam -+ fnstsw -+ andb $0x45, %ah -+ cmpb $0x05, %ah // is y*log2(x) == ħinf ? -+ je 28f -+ fst %st(1) // y*log2(x) : y*log2(x) -+ frndint // int(y*log2(x)) : y*log2(x) -+ fsubr %st, %st(1) // int(y*log2(x)) : fract(y*log2(x)) -+ fxch // fract(y*log2(x)) : int(y*log2(x)) -+ f2xm1 // 2^fract(y*log2(x))-1 : int(y*log2(x)) -+ faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) -+ fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x)) -+ addl $8, %esp -+ fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) -+ ret -+ -+28: fstp %st(1) // y*log2(x) -+ fldl MO(one) // 1 : y*log2(x) -+ fscale // 2^(y*log2(x)) : y*log2(x) -+ addl $8, %esp -+ fstp %st(1) // 2^(y*log2(x)) -+ ret -+ -+ // pow(x,ħ0) = 1 -+ .align ALIGNARG(4) -+11: fstp %st(0) // pop y -+ fldl MO(one) -+ ret -+ -+ // y == ħinf -+ .align ALIGNARG(4) -+12: fstp %st(0) // pop y -+ fldt 4(%esp) // x -+ fabs -+ fcompl MO(one) // < 1, == 1, or > 1 -+ fnstsw -+ andb $0x45, %ah -+ cmpb $0x45, %ah -+ je 13f // jump if x is NaN -+ -+ cmpb $0x40, %ah -+ je 14f // jump if |x| == 1 -+ -+ shlb $1, %ah -+ xorb %ah, %dl -+ andl $2, %edx -+ fldl MOX(inf_zero, %edx, 4) -+ ret -+ -+ .align ALIGNARG(4) -+14: fldl MO(one) -+ ret -+ -+ .align ALIGNARG(4) -+13: fldt 4(%esp) // load x == NaN -+ ret -+ -+ .align ALIGNARG(4) -+ // x is ħinf -+15: fstp %st(0) // y -+ testb $2, %dh -+ jz 16f // jump if x == +inf -+ -+ // We must find out whether y is an odd integer. -+ fld %st // y : y -+ fistpll (%esp) // y -+ fildll (%esp) // int(y) : y -+ fucompp // <empty> -+ fnstsw -+ sahf -+ jne 17f -+ -+ // OK, the value is an integer, but is it odd? -+ popl %eax -+ popl %edx -+ andb $1, %al -+ jz 18f // jump if not odd -+ // It's an odd integer. -+ shrl $31, %edx -+ fldl MOX(minf_mzero, %edx, 8) -+ ret -+ -+ .align ALIGNARG(4) -+16: fcompl MO(zero) -+ addl $8, %esp -+ fnstsw -+ shrl $5, %eax -+ andl $8, %eax -+ fldl MOX(inf_zero, %eax, 1) -+ ret -+ -+ .align ALIGNARG(4) -+17: shll $30, %edx // sign bit for y in right position -+ addl $8, %esp -+18: shrl $31, %edx -+ fldl MOX(inf_zero, %edx, 8) -+ ret -+ -+ .align ALIGNARG(4) -+ // x is ħ0 -+20: fstp %st(0) // y -+ testb $2, %dl -+ jz 21f // y > 0 -+ -+ // x is ħ0 and y is < 0. We must find out whether y is an odd integer. -+ testb $2, %dh -+ jz 25f -+ -+ fld %st // y : y -+ fistpll (%esp) // y -+ fildll (%esp) // int(y) : y -+ fucompp // <empty> -+ fnstsw -+ sahf -+ jne 26f -+ -+ // OK, the value is an integer, but is it odd? -+ popl %eax -+ popl %edx -+ andb $1, %al -+ jz 27f // jump if not odd -+ // It's an odd integer. -+ // Raise divide-by-zero exception and get minus infinity value. -+ fldl MO(one) -+ fdivl MO(zero) -+ fchs -+ ret -+ -+25: fstp %st(0) -+26: addl $8, %esp -+27: // Raise divide-by-zero exception and get infinity value. -+ fldl MO(one) -+ fdivl MO(zero) -+ ret -+ -+ .align ALIGNARG(4) -+ // x is ħ0 and y is > 0. We must find out whether y is an odd integer. -+21: testb $2, %dh -+ jz 22f -+ -+ fld %st // y : y -+ fistpll (%esp) // y -+ fildll (%esp) // int(y) : y -+ fucompp // <empty> -+ fnstsw -+ sahf -+ jne 23f -+ -+ // OK, the value is an integer, but is it odd? -+ popl %eax -+ popl %edx -+ andb $1, %al -+ jz 24f // jump if not odd -+ // It's an odd integer. -+ fldl MO(mzero) -+ ret -+ -+22: fstp %st(0) -+23: addl $8, %esp // Don't use 2 x pop -+24: fldl MO(zero) -+ ret -+ -+END(__ieee754_powl) -+ -+weak_alias(__ieee754_powl,powl) -diff -Nru qemu-0.7.0/bsd.orig/i386/e_remainderl.S qemu-0.7.0/bsd/i386/e_remainderl.S ---- qemu-0.7.0/bsd.orig/i386/e_remainderl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/e_remainderl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,24 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+RCSID("$NetBSD: $") -+ -+ENTRY(__ieee754_remainderl) -+ fldt 16(%esp) -+ fldt 4(%esp) -+1: fprem1 -+ fstsw %ax -+ sahf -+ jp 1b -+ fstp %st(1) -+ ret -+END (__ieee754_remainderl) -+ -+weak_alias(__ieee754_remainderl,remainderl) -diff -Nru qemu-0.7.0/bsd.orig/i386/e_sqrtl.c qemu-0.7.0/bsd/i386/e_sqrtl.c ---- qemu-0.7.0/bsd.orig/i386/e_sqrtl.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/e_sqrtl.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,20 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ */ -+ -+#include <sysdep.h> -+ -+long double -+__ieee754_sqrtl (long double x) -+{ -+ long double res; -+ -+ asm ("fsqrt" : "=t" (res) : "0" (x)); -+ -+ return res; -+} -+ -+weak_alias(__ieee754_sqrtl,sqrtl) -diff -Nru qemu-0.7.0/bsd.orig/i386/s_ceill.S qemu-0.7.0/bsd/i386/s_ceill.S ---- qemu-0.7.0/bsd.orig/i386/s_ceill.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_ceill.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,27 @@ -+/* -+ * Based on code written by J.T. Conklin <jtc@NetBSD.org>. -+ * Public domain. -+ */ -+ -+#include <machine/asm.h> -+RCSID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+ -+ENTRY(ceill) -+ pushl %ebp -+ movl %esp,%ebp -+ subl $8,%esp -+ -+ fstcw -4(%ebp) /* store fpu control word */ -+ movw -4(%ebp),%dx -+ orw $0x0800,%dx /* round towards +oo */ -+ andw $0xfbff,%dx -+ movw %dx,-8(%ebp) -+ fldcw -8(%ebp) /* load modfied control word */ -+ -+ fldt 8(%ebp) /* round */ -+ frndint -+ -+ fldcw -4(%ebp) /* restore original control word */ -+ -+ leave -+ ret -diff -Nru qemu-0.7.0/bsd.orig/i386/s_cosl.S qemu-0.7.0/bsd/i386/s_cosl.S ---- qemu-0.7.0/bsd.orig/i386/s_cosl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_cosl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,32 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+RCSID("$NetBSD: $") -+ -+ENTRY(__cosl) -+ fldt 4(%esp) -+ fcos -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 1f -+ ret -+ .align ALIGNARG(4) -+1: fldpi -+ fadd %st(0) -+ fxch %st(1) -+2: fprem1 -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 2b -+ fstp %st(1) -+ fcos -+ ret -+END (__cosl) -+weak_alias (__cosl, cosl) -diff -Nru qemu-0.7.0/bsd.orig/i386/s_floorl.S qemu-0.7.0/bsd/i386/s_floorl.S ---- qemu-0.7.0/bsd.orig/i386/s_floorl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_floorl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,27 @@ -+/* -+ * Based on code written by J.T. Conklin <jtc@NetBSD.org>. -+ * Public domain. -+ */ -+ -+#include <machine/asm.h> -+RCSID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+ -+ENTRY(floorl) -+ pushl %ebp -+ movl %esp,%ebp -+ subl $8,%esp -+ -+ fstcw -4(%ebp) /* store fpu control word */ -+ movw -4(%ebp),%dx -+ orw $0x0400,%dx /* round towards -oo */ -+ andw $0xf7ff,%dx -+ movw %dx,-8(%ebp) -+ fldcw -8(%ebp) /* load modfied control word */ -+ -+ fldt 8(%ebp) /* round */ -+ frndint -+ -+ fldcw -4(%ebp) /* restore original control word */ -+ -+ leave -+ ret -diff -Nru qemu-0.7.0/bsd.orig/i386/s_isnormal.c qemu-0.7.0/bsd/i386/s_isnormal.c ---- qemu-0.7.0/bsd.orig/i386/s_isnormal.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_isnormal.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,85 @@ -+/*- -+ * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org> -+ * Copyright (c) 2002-2004 David Schultz <das@FreeBSD.ORG> -+ * All rights reserved. -+ * -+ * 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 AND CONTRIBUTORS ``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. -+ * -+ * $FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $ -+ */ -+ -+union IEEEf2bits { -+ float f; -+ struct { -+ unsigned int man :23; -+ unsigned int exp :8; -+ unsigned int sign :1; -+ } bits; -+}; -+ -+union IEEEd2bits { -+ double d; -+ struct { -+ unsigned int manl :32; -+ unsigned int manh :20; -+ unsigned int exp :11; -+ unsigned int sign :1; -+ } bits; -+}; -+ -+union IEEEl2bits { -+ long double e; -+ struct { -+ unsigned int manl :32; -+ unsigned int manh :32; -+ unsigned int exp :15; -+ unsigned int sign :1; -+ unsigned int junk :16; -+ } bits; -+}; -+ -+int -+__isnormal(double d) -+{ -+ union IEEEd2bits u; -+ -+ u.d = d; -+ return (u.bits.exp != 0 && u.bits.exp != 2047); -+} -+ -+int -+__isnormalf(float f) -+{ -+ union IEEEf2bits u; -+ -+ u.f = f; -+ return (u.bits.exp != 0 && u.bits.exp != 255); -+} -+ -+int -+__isnormall(long double e) -+{ -+ union IEEEl2bits u; -+ -+ u.e = e; -+ return (u.bits.exp != 0 && u.bits.exp != 32767); -+} -diff -Nru qemu-0.7.0/bsd.orig/i386/s_llrint.S qemu-0.7.0/bsd/i386/s_llrint.S ---- qemu-0.7.0/bsd.orig/i386/s_llrint.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_llrint.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,36 @@ -+/*- -+ * Copyright (c) 2005 David Schultz <das@FreeBSD.ORG> -+ * All rights reserved. -+ * -+ * 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 AND CONTRIBUTORS ``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. -+ */ -+ -+#include <machine/asm.h> -+RCSID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $"); -+ -+ENTRY(llrint) -+ fldl 4(%esp) -+ subl $8,%esp -+ fistpll (%esp) -+ popl %eax -+ popl %edx -+ ret -diff -Nru qemu-0.7.0/bsd.orig/i386/s_llrintf.S qemu-0.7.0/bsd/i386/s_llrintf.S ---- qemu-0.7.0/bsd.orig/i386/s_llrintf.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_llrintf.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,36 @@ -+/*- -+ * Copyright (c) 2005 David Schultz <das@FreeBSD.ORG> -+ * All rights reserved. -+ * -+ * 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 AND CONTRIBUTORS ``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. -+ */ -+ -+#include <machine/asm.h> -+RCSID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+ -+ENTRY(llrintf) -+ flds 4(%esp) -+ subl $8,%esp -+ fistpll (%esp) -+ popl %eax -+ popl %edx -+ ret -diff -Nru qemu-0.7.0/bsd.orig/i386/s_llrintl.S qemu-0.7.0/bsd/i386/s_llrintl.S ---- qemu-0.7.0/bsd.orig/i386/s_llrintl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_llrintl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,35 @@ -+/* Round argument to nearest integral value according to current rounding -+ direction. -+ Copyright (C) 1997 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+ .text -+ENTRY(__llrintl) -+ fldt 4(%esp) -+ subl $8, %esp -+ fistpll (%esp) -+ fwait -+ popl %eax -+ popl %edx -+ ret -+END(__llrintl) -+weak_alias (__llrintl, llrintl) -diff -Nru qemu-0.7.0/bsd.orig/i386/s_lrint.S qemu-0.7.0/bsd/i386/s_lrint.S ---- qemu-0.7.0/bsd.orig/i386/s_lrint.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_lrint.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,35 @@ -+/*- -+ * Copyright (c) 2005 David Schultz <das@FreeBSD.ORG> -+ * All rights reserved. -+ * -+ * 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 AND CONTRIBUTORS ``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. -+ */ -+ -+#include <machine/asm.h> -+RCSID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $"); -+ -+ENTRY(lrint) -+ fldl 4(%esp) -+ subl $4,%esp -+ fistpl (%esp) -+ popl %eax -+ ret -diff -Nru qemu-0.7.0/bsd.orig/i386/s_lrintf.S qemu-0.7.0/bsd/i386/s_lrintf.S ---- qemu-0.7.0/bsd.orig/i386/s_lrintf.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_lrintf.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,35 @@ -+/*- -+ * Copyright (c) 2005 David Schultz <das@FreeBSD.ORG> -+ * All rights reserved. -+ * -+ * 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 AND CONTRIBUTORS ``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. -+ */ -+ -+#include <machine/asm.h> -+RCSID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $") -+ -+ENTRY(lrintf) -+ flds 4(%esp) -+ subl $4,%esp -+ fistpl (%esp) -+ popl %eax -+ ret -diff -Nru qemu-0.7.0/bsd.orig/i386/s_lrintl.S qemu-0.7.0/bsd/i386/s_lrintl.S ---- qemu-0.7.0/bsd.orig/i386/s_lrintl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_lrintl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,34 @@ -+/* Round argument to nearest integral value according to current rounding -+ direction. -+ Copyright (C) 1997 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+ .text -+ENTRY(__lrintl) -+ fldt 4(%esp) -+ subl $4, %esp -+ fistpl (%esp) -+ fwait -+ popl %eax -+ ret -+END(__lrintl) -+weak_alias (__lrintl, lrintl) -diff -Nru qemu-0.7.0/bsd.orig/i386/s_rintl.c qemu-0.7.0/bsd/i386/s_rintl.c ---- qemu-0.7.0/bsd.orig/i386/s_rintl.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_rintl.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,18 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Changes for long double by Ulrich Drepper <drepper@cygnus.com> -+ * Public domain. -+ */ -+ -+#include <sysdep.h> -+ -+long double -+__rintl (long double x) -+{ -+ long double res; -+ -+ asm ("frndint" : "=t" (res) : "0" (x)); -+ return res; -+} -+ -+weak_alias (__rintl, rintl) -diff -Nru qemu-0.7.0/bsd.orig/i386/s_round.c qemu-0.7.0/bsd/i386/s_round.c ---- qemu-0.7.0/bsd.orig/i386/s_round.c Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_round.c Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,51 @@ -+/*- -+ * Copyright (c) 2003, Steven G. Kargl -+ * All rights reserved. -+ * -+ * 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 unmodified, 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 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. -+ */ -+ -+#include <sys/cdefs.h> -+__FBSDID("$FreeBSD: /tmp/pcvs/ports/emulators/qemu-devel/files/Attic/patch-libmath,v 1.1 2005-05-03 04:02:46 nork Exp $"); -+ -+#include <math.h> -+ -+double -+round(double x) -+{ -+ double t; -+ -+ if (!isfinite(x)) -+ return (x); -+ -+ if (x >= 0.0) { -+ t = ceil(x); -+ if (t - x > 0.5) -+ t -= 1.0; -+ return (t); -+ } else { -+ t = ceil(-x); -+ if (t + x > 0.5) -+ t -= 1.0; -+ return (-t); -+ } -+} -diff -Nru qemu-0.7.0/bsd.orig/i386/s_sinl.S qemu-0.7.0/bsd/i386/s_sinl.S ---- qemu-0.7.0/bsd.orig/i386/s_sinl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_sinl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,32 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+RCSID("$NetBSD: $") -+ -+ENTRY(__sinl) -+ fldt 4(%esp) -+ fsin -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 1f -+ ret -+ .align ALIGNARG(4) -+1: fldpi -+ fadd %st(0) -+ fxch %st(1) -+2: fprem1 -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 2b -+ fstp %st(1) -+ fsin -+ ret -+END (__sinl) -+weak_alias (__sinl, sinl) -diff -Nru qemu-0.7.0/bsd.orig/i386/s_tanl.S qemu-0.7.0/bsd/i386/s_tanl.S ---- qemu-0.7.0/bsd.orig/i386/s_tanl.S Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/i386/s_tanl.S Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,33 @@ -+/* -+ * Written by J.T. Conklin <jtc@netbsd.org>. -+ * Public domain. -+ * -+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. -+ */ -+ -+#include <machine/asm.h> -+#include <sysdep.h> -+ -+RCSID("$NetBSD: $") -+ -+ENTRY(__tanl) -+ fldt 4(%esp) -+ fptan -+ fnstsw %ax -+ testl $0x400,%eax -+ jnz 1f -+ fstp %st(0) -+ ret -+1: fldpi -+ fadd %st(0) -+ fxch %st(1) -+2: fprem1 -+ fstsw %ax -+ testl $0x400,%eax -+ jnz 2b -+ fstp %st(1) -+ fptan -+ fstp %st(0) -+ ret -+END (__tanl) -+weak_alias (__tanl, tanl) -diff -Nru qemu-0.7.0/bsd.orig/sysdep.h qemu-0.7.0/bsd/sysdep.h ---- qemu-0.7.0/bsd.orig/sysdep.h Wed Dec 31 19:00:00 1969 -+++ qemu-0.7.0/bsd/sysdep.h Fri Apr 29 02:11:27 2005 -@@ -0,0 +1,20 @@ -+#ifndef _QEMU_BSD_SYSDEP_H_ -+#define _QEMU_BSD_SYSDEP_H_ -+ -+#include <sys/cdefs.h> -+ -+#define HAVE_ELF -+ -+#ifdef __ASSEMBLER__ -+#define ALIGNARG(log2) 1<<log2 -+#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; -+#define ASM_SIZE_DIRECTIVE(name) .size name,.-name; -+#define END(x) -+#define strong_alias(sym,alias) .set alias,sym; -+#define weak_alias(sym,alias) .weak alias; .equ alias,sym; -+#else -+#define strong_alias(sym,alias) __strong_reference(sym,alias); -+#define weak_alias(sym,alias) __weak_reference(sym,alias); -+#endif -+ -+#endif diff --git a/emulators/qemu-devel/files/patch-libmath2 b/emulators/qemu-devel/files/patch-libmath2 deleted file mode 100644 index a6f6475ee8b4..000000000000 --- a/emulators/qemu-devel/files/patch-libmath2 +++ /dev/null @@ -1,67 +0,0 @@ -Index: qemu/bsd/Makefile -@@ -16,7 +16,8 @@ - ${MACHINE_ARCH}/s_rintl.c \ - ${MACHINE_ARCH}/s_round.c \ - ${MACHINE_ARCH}/s_sinl.S \ -- ${MACHINE_ARCH}/s_tanl.S -+ ${MACHINE_ARCH}/s_tanl.S \ -+ ${MACHINE_ARCH}/s_ldexpl.c - - OBJS= ${SRCS:R:S/$/.o/} - -Index: qemu/bsd/i386/s_ldexpl.c -@@ -0,0 +1,21 @@ -+#include <math.h> -+#include <errno.h> -+#include <sysdep.h> -+ -+long double __ldexpl(long double x, int expn) -+{ -+ long double res; -+ if (!isfinite (x) || x == 0.0L) -+ return x; -+ -+ __asm__ ("fscale" -+ : "=t" (res) -+ : "0" (x), "u" ((long double) expn)); -+ -+ if (!isfinite (res) || res == 0.0L) -+ errno = ERANGE; -+ -+ return res; -+} -+ -+weak_alias(__ldexpl,ldexpl) -Index: qemu/bsd/amd64/s_ldexpl.c -@@ -0,0 +1,21 @@ -+#include <math.h> -+#include <errno.h> -+#include <sysdep.h> -+ -+long double __ldexpl(long double x, int expn) -+{ -+ long double res; -+ if (!isfinite (x) || x == 0.0L) -+ return x; -+ -+ __asm__ ("fscale" -+ : "=t" (res) -+ : "0" (x), "u" ((long double) expn)); -+ -+ if (!isfinite (res) || res == 0.0L) -+ errno = ERANGE; -+ -+ return res; -+} -+ -+weak_alias(__ldexpl,ldexpl) -Index: qemu/target-i386/helper.c -@@ -2886,6 +2886,8 @@ - ST0 = floatx_round_to_int(ST0, &env->fp_status); - } - -+long double ldexpl(long double, int); -+ - void helper_fscale(void) - { - ST0 = ldexp (ST0, (int)(ST1)); diff --git a/emulators/qemu-devel/files/patch-libmath4 b/emulators/qemu-devel/files/patch-libmath4 deleted file mode 100644 index 0c482370b8ba..000000000000 --- a/emulators/qemu-devel/files/patch-libmath4 +++ /dev/null @@ -1,45 +0,0 @@ -Index: qemu/bsd/i386/s_ldexpl.c -@@ -2,6 +2,30 @@ - #include <errno.h> - #include <sysdep.h> - -+/* 4.x doesnt have isfinite */ -+#ifndef isfinite -+#define isfinite __isfinitel -+ -+union IEEEl2bits { -+ long double e; -+ struct { -+ unsigned int manl :32; -+ unsigned int manh :32; -+ unsigned int exp :15; -+ unsigned int sign :1; -+ unsigned int junk :16; -+ } bits; -+}; -+ -+static int __isfinitel(long double x) -+{ -+ union IEEEl2bits u; -+ -+ u.e = x; -+ return (u.bits.exp != 32767); -+} -+#endif -+ - long double __ldexpl(long double x, int expn) - { - long double res; -Index: qemu/bsd/i386/s_round.c -@@ -29,6 +29,11 @@ - - #include <math.h> - -+/* 4.x doesnt have isfinite */ -+#ifndef isfinite -+#define isfinite(x) (!isnan(x) && !isinf(x)) -+#endif -+ - double - round(double x) - { diff --git a/emulators/qemu-devel/files/patch-osdep.c b/emulators/qemu-devel/files/patch-osdep.c deleted file mode 100644 index 3d5382b50c51..000000000000 --- a/emulators/qemu-devel/files/patch-osdep.c +++ /dev/null @@ -1,40 +0,0 @@ -Index: qemu/osdep.c -@@ -323,7 +323,9 @@ - - #elif defined(USE_KQEMU) - -+#ifndef __FreeBSD__ - #include <sys/vfs.h> -+#endif - #include <sys/mman.h> - #include <fcntl.h> - -@@ -334,6 +336,7 @@ - const char *tmpdir; - char phys_ram_file[1024]; - void *ptr; -+#ifndef __FreeBSD__ - struct statfs stfs; - - if (phys_ram_fd < 0) { -@@ -389,12 +392,20 @@ - } - unlink(phys_ram_file); - } -+#endif - size = (size + 4095) & ~4095; -+#ifndef __FreeBSD__ - ftruncate(phys_ram_fd, phys_ram_size + size); - ptr = mmap(NULL, - size, - PROT_WRITE | PROT_READ, MAP_SHARED, - phys_ram_fd, phys_ram_size); -+#else -+ ptr = mmap(NULL, -+ size, -+ PROT_WRITE | PROT_READ, MAP_PRIVATE|MAP_ANON, -+ -1, 0); -+#endif - if (ptr == MAP_FAILED) { - fprintf(stderr, "Could not map physical memory\n"); - exit(1); diff --git a/emulators/qemu-devel/files/patch-qemu-img.c b/emulators/qemu-devel/files/patch-qemu-img.c deleted file mode 100644 index b525b50a3bcb..000000000000 --- a/emulators/qemu-devel/files/patch-qemu-img.c +++ /dev/null @@ -1,10 +0,0 @@ -Index: qemu/qemu-img.c -@@ -134,7 +134,7 @@ - "Command syntax:\n" - " create [-e] [-b base_image] [-f fmt] filename [size]\n" - " commit [-f fmt] filename\n" -- " convert [-c] [-e] [-f fmt] filename [-O output_fmt] output_filename\n" -+ " convert [-c] [-e] [-f fmt] [-O output_fmt] filename output_filename\n" - " info [-f fmt] filename\n" - "\n" - "Command parameters:\n" diff --git a/emulators/qemu-devel/files/patch-qemu-img.texi b/emulators/qemu-devel/files/patch-qemu-img.texi deleted file mode 100644 index 79693026dd2d..000000000000 --- a/emulators/qemu-devel/files/patch-qemu-img.texi +++ /dev/null @@ -1,19 +0,0 @@ -Index: qemu/qemu-img.texi -@@ -10,7 +10,7 @@ - @table @option - @item create [-e] [-b @var{base_image}] [-f @var{fmt}] @var{filename} [@var{size}] - @item commit [-f @var{fmt}] @var{filename} --@item convert [-c] [-e] [-f @var{fmt}] @var{filename} [-O @var{output_fmt}] @var{output_filename} -+@item convert [-c] [-e] [-f @var{fmt}] [-O @var{output_fmt}] @var{filename} @var{output_filename} - @item info [-f @var{fmt}] @var{filename} - @end table - -@@ -83,7 +83,7 @@ - - Commit the changes recorded in @var{filename} in its base image. - --@item convert [-c] [-e] [-f @var{fmt}] @var{filename} [-O @var{output_fmt}] @var{output_filename} -+@item convert [-c] [-e] [-f @var{fmt}] [-O @var{output_fmt}] @var{filename} @var{output_filename} - - Convert the disk image @var{filename} to disk image @var{output_filename} - using format @var{output_fmt}. It can be optionnaly encrypted diff --git a/emulators/qemu-devel/files/patch-slirp-mbuf.c b/emulators/qemu-devel/files/patch-slirp-mbuf.c deleted file mode 100644 index 1bd32d6ad7dc..000000000000 --- a/emulators/qemu-devel/files/patch-slirp-mbuf.c +++ /dev/null @@ -1,26 +0,0 @@ -# http://lists.gnu.org/archive/html/qemu-devel/2005-05/msg00228.html - -Index: qemu/slirp/mbuf.c -@@ -146,18 +146,19 @@ - struct mbuf *m; - int size; - { -+ int datasize; -+ - /* some compiles throw up on gotos. This one we can fake. */ - if(m->m_size>size) return; - - if (m->m_flags & M_EXT) { -- /* datasize = m->m_data - m->m_ext; */ -+ datasize = m->m_data - m->m_ext; - m->m_ext = (char *)realloc(m->m_ext,size); - /* if (m->m_ext == NULL) - * return (struct mbuf *)NULL; - */ -- /* m->m_data = m->m_ext + datasize; */ -+ m->m_data = m->m_ext + datasize; - } else { -- int datasize; - char *dat; - datasize = m->m_data - m->m_dat; - dat = (char *)malloc(size); diff --git a/emulators/qemu-devel/files/patch-slirp-nat b/emulators/qemu-devel/files/patch-slirp-nat deleted file mode 100644 index 9c1accaeaf83..000000000000 --- a/emulators/qemu-devel/files/patch-slirp-nat +++ /dev/null @@ -1,56 +0,0 @@ -# http://lists.gnu.org/archive/html/qemu-devel/2005-12/msg00277.html - -diff -wurb qemu/slirp/misc.c qemu-patched/slirp/misc.c ---- qemu/slirp/misc.c Sun Dec 12 12:45:10 2004 -+++ qemu-patched/slirp/misc.c Mon Mar 21 13:22:05 2005 -@@ -90,13 +90,12 @@ - char buff[256]; - struct hostent *he; - -- if (gethostname(buff,256) < 0) -- return; -- -- if ((he = gethostbyname(buff)) == NULL) -- return; -- -+ if (gethostname(buff,256) == 0) -+ if ((he = gethostbyname(buff)) != NULL) - our_addr = *(struct in_addr *)he->h_addr; -+ -+ if (our_addr.s_addr == 0 || our_addr.s_addr == loopback_addr.s_addr) -+ our_addr.s_addr = special_addr.s_addr | htonl(CTL_ALIAS); - } - - #if SIZEOF_CHAR_P == 8 -diff -wurb qemu/slirp/slirp.c qemu-patched/slirp/slirp.c ---- qemu/slirp/slirp.c Fri Oct 8 01:27:35 2004 -+++ qemu-patched/slirp/slirp.c Mon Mar 21 13:22:05 2005 -@@ -144,7 +144,6 @@ - m_init(); - - /* set default addresses */ -- getouraddr(); - inet_aton("127.0.0.1", &loopback_addr); - - if (get_dns_addr(&dns_addr) < 0) { -@@ -153,6 +152,7 @@ - } - - inet_aton(CTL_SPECIAL, &special_addr); -+ getouraddr(); - } - - #define CONN_CANFSEND(so) (((so)->so_state & (SS_FCANTSENDMORE|SS_ISFCONNECTED)) == SS_ISFCONNECTED) -diff -wurb qemu/slirp/udp.c qemu-patched/slirp/udp.c ---- qemu/slirp/udp.c Fri Oct 8 01:27:35 2004 -+++ qemu-patched/slirp/udp.c Mon Mar 21 13:22:05 2005 -@@ -314,6 +314,8 @@ - saddr = *addr; - if ((so->so_faddr.s_addr & htonl(0xffffff00)) == special_addr.s_addr) - saddr.sin_addr.s_addr = so->so_faddr.s_addr; -+ if ((so->so_faddr.s_addr & htonl(0x000000ff)) == htonl(0xff)) -+ saddr.sin_addr.s_addr = special_addr.s_addr | htonl(CTL_ALIAS); - daddr.sin_addr = so->so_laddr; - daddr.sin_port = so->so_lport; - - diff --git a/emulators/qemu-devel/files/patch-slirp_throttle b/emulators/qemu-devel/files/patch-slirp_throttle deleted file mode 100644 index 50d8c0fcc39d..000000000000 --- a/emulators/qemu-devel/files/patch-slirp_throttle +++ /dev/null @@ -1,257 +0,0 @@ -Index: qemu/vl.c -=================================================================== -RCS file: /sources/qemu/qemu/vl.c,v -retrieving revision 1.157 -diff -u -p -r1.157 vl.c ---- vl.c 18 Dec 2005 20:34:32 -0000 1.157 -+++ vl.c 20 Dec 2005 21:11:37 -0000 -@@ -1768,13 +1768,16 @@ VLANState *qemu_find_vlan(int id) - } - - VLANClientState *qemu_new_vlan_client(VLANState *vlan, -- IOReadHandler *fd_read, void *opaque) -+ IOReadHandler *fd_read, -+ IOCanRWHandler *fd_can_read, -+ void *opaque) - { - VLANClientState *vc, **pvc; - vc = qemu_mallocz(sizeof(VLANClientState)); - if (!vc) - return NULL; - vc->fd_read = fd_read; -+ vc->fd_can_read = fd_can_read; - vc->opaque = opaque; - vc->vlan = vlan; - -@@ -1786,6 +1789,20 @@ VLANClientState *qemu_new_vlan_client(VL - return vc; - } - -+int qemu_can_send_packet(VLANClientState *vc1) -+{ -+ VLANState *vlan = vc1->vlan; -+ VLANClientState *vc; -+ -+ for(vc = vlan->first_client; vc != NULL; vc = vc->next) { -+ if (vc != vc1) { -+ if (vc->fd_can_read && !vc->fd_can_read(vc->opaque)) -+ return 0; -+ } -+ } -+ return 1; -+} -+ - void qemu_send_packet(VLANClientState *vc1, const uint8_t *buf, int size) - { - VLANState *vlan = vc1->vlan; -@@ -1811,7 +1828,7 @@ static VLANClientState *slirp_vc; - - int slirp_can_output(void) - { -- return 1; -+ return qemu_can_send_packet(slirp_vc); - } - - void slirp_output(const uint8_t *pkt, int pkt_len) -@@ -1839,7 +1856,7 @@ static int net_slirp_init(VLANState *vla - slirp_init(); - } - slirp_vc = qemu_new_vlan_client(vlan, -- slirp_receive, NULL); -+ slirp_receive, NULL, NULL); - snprintf(slirp_vc->info_str, sizeof(slirp_vc->info_str), "user redirector"); - return 0; - } -@@ -2024,7 +2041,7 @@ static TAPState *net_tap_fd_init(VLANSta - if (!s) - return NULL; - s->fd = fd; -- s->vc = qemu_new_vlan_client(vlan, tap_receive, s); -+ s->vc = qemu_new_vlan_client(vlan, tap_receive, NULL, s); - qemu_set_fd_handler(s->fd, tap_send, NULL, s); - snprintf(s->vc->info_str, sizeof(s->vc->info_str), "tap: fd=%d", fd); - return s; -@@ -2327,7 +2344,7 @@ static NetSocketState *net_socket_fd_ini - return NULL; - s->fd = fd; - -- s->vc = qemu_new_vlan_client(vlan, net_socket_receive_dgram, s); -+ s->vc = qemu_new_vlan_client(vlan, net_socket_receive_dgram, NULL, s); - qemu_set_fd_handler(s->fd, net_socket_send_dgram, NULL, s); - - /* mcast: save bound address as dst */ -@@ -2355,7 +2372,7 @@ static NetSocketState *net_socket_fd_ini - return NULL; - s->fd = fd; - s->vc = qemu_new_vlan_client(vlan, -- net_socket_receive, s); -+ net_socket_receive, NULL, s); - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "socket: fd=%d", fd); - if (is_connected) { -Index: qemu/vl.h -=================================================================== -RCS file: /sources/qemu/qemu/vl.h,v -retrieving revision 1.99 -diff -u -p -r1.99 vl.h ---- vl.h 18 Dec 2005 20:34:32 -0000 1.99 -+++ vl.h 20 Dec 2005 21:11:38 -0000 -@@ -279,6 +279,9 @@ typedef struct VLANClientState VLANClien - - struct VLANClientState { - IOReadHandler *fd_read; -+ /* Packets may still be sent if this returns zero. It's used to -+ rate-limit the slirp code. */ -+ IOCanRWHandler *fd_can_read; - void *opaque; - struct VLANClientState *next; - struct VLANState *vlan; -@@ -293,8 +296,12 @@ typedef struct VLANState { - - VLANState *qemu_find_vlan(int id); - VLANClientState *qemu_new_vlan_client(VLANState *vlan, -- IOReadHandler *fd_read, void *opaque); -+ IOReadHandler *fd_read, -+ IOCanRWHandler *fd_can_read, -+ void *opaque); -+int qemu_can_send_packet(VLANClientState *vc); - void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size); -+void qemu_handler_true(void *opaque); - - void do_info_network(void); - -Index: qemu/hw/lance.c -=================================================================== -RCS file: /sources/qemu/qemu/hw/lance.c,v -retrieving revision 1.5 -diff -u -p -r1.5 lance.c ---- hw/lance.c 15 Nov 2005 22:16:05 -0000 1.5 -+++ hw/lance.c 20 Dec 2005 21:11:38 -0000 -@@ -283,6 +283,11 @@ static CPUWriteMemoryFunc *lance_mem_wri - - #define MIN_BUF_SIZE 60 - -+static void lance_can_receive(void *opaque) -+{ -+ return 1; -+} -+ - static void lance_receive(void *opaque, const uint8_t *buf, int size) - { - LANCEState *s = opaque; -@@ -440,7 +445,7 @@ void lance_init(NICInfo *nd, int irq, ui - - lance_reset(s); - -- s->vc = qemu_new_vlan_client(nd->vlan, lance_receive, s); -+ s->vc = qemu_new_vlan_client(nd->vlan, lance_receive, lance_can_receive, s); - - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "lance macaddr=%02x:%02x:%02x:%02x:%02x:%02x", -Index: qemu/hw/ne2000.c -=================================================================== -RCS file: /sources/qemu/qemu/hw/ne2000.c,v -retrieving revision 1.17 -diff -u -p -r1.17 ne2000.c ---- hw/ne2000.c 22 Nov 2005 20:16:13 -0000 1.17 -+++ hw/ne2000.c 20 Dec 2005 21:11:38 -0000 -@@ -200,14 +200,10 @@ static int compute_mcast_idx(const uint8 - return (crc >> 26); - } - --/* return the max buffer size if the NE2000 can receive more data */ --static int ne2000_can_receive(void *opaque) -+static int ne2000_buffer_full(NE2000State *s) - { -- NE2000State *s = opaque; - int avail, index, boundary; -- -- if (s->cmd & E8390_STOP) -- return 0; -+ - index = s->curpag << 8; - boundary = s->boundary << 8; - if (index < boundary) -@@ -215,8 +211,17 @@ static int ne2000_can_receive(void *opaq - else - avail = (s->stop - s->start) - (index - boundary); - if (avail < (MAX_ETH_FRAME_SIZE + 4)) -- return 0; -- return MAX_ETH_FRAME_SIZE; -+ return 1; -+ return 0; -+} -+ -+static int ne2000_can_receive(void *opaque) -+{ -+ NE2000State *s = opaque; -+ -+ if (s->cmd & E8390_STOP) -+ return 1; -+ return !ne2000_buffer_full(s); - } - - #define MIN_BUF_SIZE 60 -@@ -234,7 +239,7 @@ static void ne2000_receive(void *opaque, - printf("NE2000: received len=%d\n", size); - #endif - -- if (!ne2000_can_receive(s)) -+ if (s->cmd & E8390_STOP || ne2000_buffer_full(s)) - return; - - /* XXX: check this */ -@@ -715,7 +720,8 @@ void isa_ne2000_init(int base, int irq, - - ne2000_reset(s); - -- s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive, s); -+ s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive, -+ ne2000_can_receive, s); - - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "ne2000 macaddr=%02x:%02x:%02x:%02x:%02x:%02x", -@@ -784,7 +790,8 @@ void pci_ne2000_init(PCIBus *bus, NICInf - s->pci_dev = (PCIDevice *)d; - memcpy(s->macaddr, nd->macaddr, 6); - ne2000_reset(s); -- s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive, s); -+ s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive, -+ ne2000_can_receive, s); - - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "ne2000 pci macaddr=%02x:%02x:%02x:%02x:%02x:%02x", -Index: qemu/hw/smc91c111.c -=================================================================== -RCS file: /sources/qemu/qemu/hw/smc91c111.c,v -retrieving revision 1.2 -diff -u -p -r1.2 smc91c111.c ---- hw/smc91c111.c 18 Dec 2005 17:39:52 -0000 1.2 -+++ hw/smc91c111.c 20 Dec 2005 21:11:38 -0000 -@@ -593,6 +593,17 @@ static uint32_t smc91c111_readl(void *op - return val; - } - -+static int smc91c111_can_receive(void *opaque) -+{ -+ smc91c111_state *s = (smc91c111_state *)opaque; -+ -+ if ((s->rcr & RCR_RXEN) == 0 || (s->rcr & RCR_SOFT_RST)) -+ return 1; -+ if (s->allocated == (1 << NUM_PACKETS) - 1) -+ return 0; -+ return 1; -+} -+ - static void smc91c111_receive(void *opaque, const uint8_t *buf, int size) - { - smc91c111_state *s = (smc91c111_state *)opaque; -@@ -697,6 +708,7 @@ void smc91c111_init(NICInfo *nd, uint32_ - - smc91c111_reset(s); - -- s->vc = qemu_new_vlan_client(nd->vlan, smc91c111_receive, s); -+ s->vc = qemu_new_vlan_client(nd->vlan, smc91c111_receive, -+ smc91c111_can_receive, s); - /* ??? Save/restore. */ - } diff --git a/emulators/qemu-devel/files/patch-vl.c b/emulators/qemu-devel/files/patch-vl.c deleted file mode 100644 index adf052460e28..000000000000 --- a/emulators/qemu-devel/files/patch-vl.c +++ /dev/null @@ -1,27 +0,0 @@ ---- vl.c.orig Mon Nov 14 15:55:56 2005 -+++ vl.c Mon Nov 14 15:57:25 2005 -@@ -1363,7 +1367,7 @@ - return chr; - } - --#if defined(__linux__) -+#if defined(__linux__) || defined(__FreeBSD__) - CharDriverState *qemu_chr_open_pty(void) - { - char slave_name[1024]; -@@ -1509,6 +1513,7 @@ - return chr; - } - -+#if defined(__linux__) - static int pp_ioctl(CharDriverState *chr, int cmd, void *arg) - { - int fd = (int)chr->opaque; -@@ -1571,6 +1576,7 @@ - chr->chr_ioctl = pp_ioctl; - return chr; - } -+#endif - - #else - CharDriverState *qemu_chr_open_pty(void) |