- reset rombios32 area
- Support for more SPARC relocations, by Martin Bochnig.
- Serial console improvements, by Stefan Weil.
- Qemu support for S32 and U32 alsa output, by Vassili Karpov.
- PS/2 interface - Allow custom IO ports + IRQ, by Herve Poussineau.
- Add PS/2 keyboard to MIPS R4K, by Herve Poussineau.
- Monitor multiplexing, by Jason Wessel.
- -no-frame option for sdl, by Christian Laursen.
- Don't require a disk image for network boot, by Ferenc Wagner.
- Add -bootp option for slirp, by Anthony Liguori.
- Add OACK support to slirp TFTP server, by Anthony Liguori.
- Change -tftp option to take a root directory, by Anthony Liguori.
- 2nd serial port for Malta, by Jason Wessel.
- Increase the number of multiplexed monitor devices.
- Allow arbitrary MIPS BIOS sizes between 0 and 4 MB, by Stefan Weil.
- Allow gdbstub to connect over any serial device.
- Basic USB device resume (root hub only), by Lonnie Mendez.
- 24C01 / 24C02 EEPROM emulation for Malta, by Stefan Weil.
- DS1225Y nvram device, by Herve Poussineau.
- Make removing IOHandlers safe from within an IOHandler, by Anthony Liguori.
- MIPS FPU dynamic activation, part 1, by Herve Poussineau.
- MIPS Userland TLS register emulation, by Daniel Jacobowitz.
- New -cpu options: choose CPU model for emulated target.
Only relevant on PowerPC targets, for now.
- Simple u-boot image loading support.
- Great PowerPC emulation code resynchronisation and improvments:
- Add status file to make regression tracking easier
- Move all micro-operations helpers definitions into a separate header:
should never be seen outside of op.c
- Update copyrights
- Add new / missing PowerPC CPU definitions
- Add definitions for PowerPC BookE
- Add support for PowerPC 6xx/7xx software driven TLBs
Allow use of PowerPC 603 as an example
- Add preliminary code for POWER, POWER2, PowerPC 403, 405, 440, 601, 602
and BookE support
- Avoid compiling priviledged only resources support for user-mode emulation
- Remove unused helpers / micro-ops / dead code
- Add instructions usage statistics dump: useful to figure which instructions
need strong optimizations.
- Micro-operation fixes:
* add missing RETURN in some micro-ops
* fix prototypes
* use softfloat routines for all floating-point operations
* fix tlbie instruction
* move some huge micro-operations into helpers
- emulation fixes:
* fix inverted opcodes for fcmpo / fcmpu
* condition register update is always to be done after the whole
instruction has completed
* add missing NIP updates when calling helpers that may generate an
exception
- optimizations and improvments:
* optimize very often used instructions (li, mr, rlwixx...)
* remove specific micro-ops for rarely used instructions
* add routines for addresses computations to avoid bugs due to multiple
different implementations
* fix TB linking: do not reset T0 at the end of every TB.
- Implement --cpu for ARM.
- And some bugfixes.
Repocopy by: marcus
Approved by: miwi (mentor, implicit)
140 lines
4.5 KiB
Plaintext
140 lines
4.5 KiB
Plaintext
Index: qemu/Makefile
|
|
@@ -25,7 +25,10 @@
|
|
DOCS=
|
|
endif
|
|
|
|
-all: $(TOOLS) $(DOCS) recurse-all
|
|
+all: bsd/libmath.a $(TOOLS) $(DOCS) recurse-all
|
|
+
|
|
+bsd/libmath.a:
|
|
+ ( cd bsd ; $(BSD_MAKE) CC=$(CC) )
|
|
|
|
subdir-%: dyngen$(EXESUF)
|
|
$(MAKE) -C $(subst subdir-,,$@) all
|
|
@@ -40,6 +43,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
|
|
Index: qemu/Makefile.target
|
|
@@ -465,8 +465,8 @@
|
|
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
|
|
endif
|
|
|
|
-$(QEMU_SYSTEM): $(VL_OBJS) libqemu.a
|
|
- $(CC) $(VL_LDFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS)
|
|
+$(QEMU_SYSTEM): $(VL_OBJS) libqemu.a ../bsd/libmath.a
|
|
+ $(CC) $(VL_LDFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS) ../bsd/libmath.a
|
|
|
|
cocoa.o: cocoa.m
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
|
|
Index: qemu/fpu/softfloat-native.c
|
|
@@ -2,11 +2,16 @@
|
|
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__) || (defined(HOST_SOLARIS) && HOST_SOLARIS < 10)
|
|
+#if defined(_BSD) && !defined(__APPLE__) && !defined(__FreeBSD__) || \
|
|
+ (defined(__FreeBSD__) && __FreeBSD_version < 500000) || \
|
|
+ (defined(HOST_SOLARIS) && HOST_SOLARIS < 10)
|
|
fpsetround(val);
|
|
#elif defined(__arm__)
|
|
/* nothing to do */
|
|
@@ -22,7 +25,7 @@
|
|
}
|
|
#endif
|
|
|
|
-#if defined(_BSD) || (defined(HOST_SOLARIS) && HOST_SOLARIS < 10)
|
|
+#if (defined(_BSD) && !defined(__FreeBSD__)) || (defined(HOST_SOLARIS) && HOST_SOLARIS < 10)
|
|
#define lrint(d) ((int32_t)rint(d))
|
|
#define llrint(d) ((int64_t)rint(d))
|
|
#define lrintf(f) ((int32_t)rint(f))
|
|
Index: qemu/fpu/softfloat-native.h
|
|
@@ -1,8 +1,28 @@
|
|
/* Native implementation of soft float functions */
|
|
#include <math.h>
|
|
|
|
-#if (defined(_BSD) && !defined(__APPLE__)) || defined(HOST_SOLARIS)
|
|
+#ifdef __FreeBSD__
|
|
+#include <osreldate.h>
|
|
+long double fabsl(long double x);
|
|
+long double remainderl(long double x, long double y);
|
|
+long double sqrtl(long double x);
|
|
+long double rintl(long double x);
|
|
+long lrintl(long double x);
|
|
+long long llrintl(long double x);
|
|
+#endif
|
|
+
|
|
+#if (defined(_BSD) && !defined(__APPLE__) && \
|
|
+ (!defined(__FreeBSD__) || __FreeBSD_version < 500000)) || \
|
|
+ defined(HOST_SOLARIS)
|
|
#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))
|
|
+#endif
|
|
#define fabsf(f) ((float)fabs(f))
|
|
#else
|
|
#include <fenv.h>
|
|
@@ -60,7 +80,9 @@
|
|
/*----------------------------------------------------------------------------
|
|
| Software IEC/IEEE floating-point rounding mode.
|
|
*----------------------------------------------------------------------------*/
|
|
-#if (defined(_BSD) && !defined(__APPLE__)) || defined(HOST_SOLARIS)
|
|
+#if (defined(_BSD) && !defined(__APPLE__) && \
|
|
+ (!defined(__FreeBSD__) || __FreeBSD_version < 500000)) || \
|
|
+ defined(HOST_SOLARIS)
|
|
enum {
|
|
float_round_nearest_even = FP_RN,
|
|
float_round_down = FP_RM,
|
|
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: */
|