Revision 7d3505c5

b/Makefile
16 16

  
17 17
all: dyngen$(EXESUF) $(TOOLS) qemu-doc.html qemu-tech.html qemu.1
18 18
	for d in $(TARGET_DIRS); do \
19
	make -C $$d $@ || exit 1 ; \
19
	$(MAKE) -C $$d $@ || exit 1 ; \
20 20
        done
21 21

  
22 22
qemu-mkcow: qemu-mkcow.c
......
29 29
# avoid old build problems by removing potentially incorrect old files
30 30
	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 
31 31
	rm -f *.o *.a $(TOOLS) dyngen$(EXESUF) TAGS qemu.pod
32
	make -C tests clean
32
	$(MAKE) -C tests clean
33 33
	for d in $(TARGET_DIRS); do \
34
	make -C $$d $@ || exit 1 ; \
34
	$(MAKE) -C $$d $@ || exit 1 ; \
35 35
        done
36 36

  
37 37
distclean: clean
......
55 55
	install qemu.1 qemu-mkcow.1 "$(mandir)/man1"
56 56
endif
57 57
	for d in $(TARGET_DIRS); do \
58
	make -C $$d $@ || exit 1 ; \
58
	$(MAKE) -C $$d $@ || exit 1 ; \
59 59
        done
60 60

  
61 61
# various test targets
62 62
test speed test2: all
63
	make -C tests $@
63
	$(MAKE) -C tests $@
64 64

  
65 65
TAGS: 
66 66
	etags *.[ch] tests/*.[ch]
b/configure
79 79
MINGW32*)
80 80
mingw32="yes"
81 81
;;
82
FreeBSD)
83
bsd="yes"
84
;;
85
NetBSD)
86
bsd="yes"
87
;;
88
OpenBSD)
89
bsd="yes"
90
;;
82 91
*) ;;
83 92
esac
84 93

  
94
if [ "$bsd" = "yes" ] ; then
95
  make="gmake"
96
  target_list="i386-softmmu"
97
fi
98

  
85 99
# find source path
86 100
# XXX: we assume an absolute path is given when launching configure, 
87 101
# except in './configure' case.
......
373 387
if test "$mingw32" = "yes" ; then
374 388
  echo "CONFIG_WIN32=yes" >> $config_mak
375 389
  echo "#define CONFIG_WIN32 1" >> $config_h
376
else
390
elif test -f "/usr/include/byteswap.h" ; then
377 391
  echo "#define HAVE_BYTESWAP_H 1" >> $config_h
378 392
fi
379 393
if test "$gdbstub" = "yes" ; then
......
402 416
echo "SRC_PATH=$source_path" >> $config_mak
403 417
echo "TARGET_DIRS=$target_list" >> $config_mak
404 418

  
419
if [ "$bsd" = "yes" ] ; then
420
  echo "#define _BSD 1" >> $config_h
421
fi
422

  
405 423
for target in $target_list; do 
406 424

  
407 425
target_dir="$target"
b/dyngen-exec.h
59 59
extern int printf(const char *, ...);
60 60
#undef NULL
61 61
#define NULL 0
62
#ifdef _BSD
63
#include <ieeefp.h>
64
#else
62 65
#include <fenv.h>
66
#endif
63 67

  
64 68
#ifdef __i386__
65 69
#define AREG0 "ebp"
b/gdbstub.c
532 532

  
533 533
    /* set short latency */
534 534
    val = 1;
535
    setsockopt(fd, SOL_TCP, TCP_NODELAY, &val, sizeof(val));
535
    setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
536 536
    
537 537
    s = qemu_mallocz(sizeof(GDBState));
538 538
    if (!s) {
b/target-i386/cpu.h
259 259
    CC_OP_NB,
260 260
};
261 261

  
262
#if defined(__i386__) || defined(__x86_64__)
262
#if (defined(__i386__) || defined(__x86_64__)) && !defined(_BSD)
263 263
#define USE_X86LDOUBLE
264 264
#endif
265 265

  
b/target-i386/exec.h
17 17
 * License along with this library; if not, write to the Free Software
18 18
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 19
 */
20
#include "config.h"
20 21
#include "dyngen-exec.h"
21 22

  
22 23
/* at least 4 register variables are defines */
......
307 308
#define rint rintl
308 309
#endif
309 310

  
311
#if !defined(_BSD)
310 312
extern int lrint(CPU86_LDouble x);
311 313
extern int64_t llrint(CPU86_LDouble x);
314
#else
315
#define lrint(d)		((int)rint(d))
316
#define llrint(d)		((int)rint(d))
317
#endif
312 318
extern CPU86_LDouble fabs(CPU86_LDouble x);
313 319
extern CPU86_LDouble sin(CPU86_LDouble x);
314 320
extern CPU86_LDouble cos(CPU86_LDouble x);
b/target-i386/op.c
1938 1938
    int rnd_type;
1939 1939
    env->fpuc = lduw((void *)A0);
1940 1940
    /* set rounding mode */
1941
#ifdef _BSD
1942
    switch(env->fpuc & RC_MASK) {
1943
    default:
1944
    case RC_NEAR:
1945
        rnd_type = FP_RN;
1946
        break;
1947
    case RC_DOWN:
1948
        rnd_type = FP_RM;
1949
        break;
1950
    case RC_UP:
1951
        rnd_type = FP_RP;
1952
        break;
1953
    case RC_CHOP:
1954
        rnd_type = FP_RZ;
1955
        break;
1956
    }
1957
    fpsetround(rnd_type);
1958
#else
1941 1959
    switch(env->fpuc & RC_MASK) {
1942 1960
    default:
1943 1961
    case RC_NEAR:
......
1954 1972
        break;
1955 1973
    }
1956 1974
    fesetround(rnd_type);
1975
#endif
1957 1976
}
1958 1977

  
1959 1978
void OPPROTO op_fclex(void)
b/vl.c
28 28
#include <fcntl.h>
29 29
#include <signal.h>
30 30
#include <time.h>
31
#include <malloc.h>
32 31
#include <errno.h>
33 32
#include <sys/time.h>
34 33

  
35 34
#ifndef _WIN32
36 35
#include <sys/times.h>
37 36
#include <sys/wait.h>
38
#include <pty.h>
39 37
#include <termios.h>
40 38
#include <sys/poll.h>
41 39
#include <sys/mman.h>
42 40
#include <sys/ioctl.h>
43 41
#include <sys/socket.h>
42
#ifdef _BSD
43
#include <sys/stat.h>
44
#include <libutil.h>
45
#else
44 46
#include <linux/if.h>
45 47
#include <linux/if_tun.h>
48
#include <pty.h>
49
#include <malloc.h>
46 50
#include <linux/rtc.h>
47 51
#endif
52
#endif
48 53

  
49 54
#if defined(CONFIG_SLIRP)
50 55
#include "libslirp.h"
51 56
#endif
52 57

  
53 58
#ifdef _WIN32
59
#include <malloc.h>
54 60
#include <sys/timeb.h>
55 61
#include <windows.h>
56 62
#define getopt_long_only getopt_long
......
58 64
#endif
59 65

  
60 66
#ifdef CONFIG_SDL
67
#if defined(__linux__)
61 68
/* SDL use the pthreads and they modify sigaction. We don't
62 69
   want that. */
63
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
70
#if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2))
64 71
extern void __libc_sigaction();
65 72
#define sigaction(sig, act, oact) __libc_sigaction(sig, act, oact)
66 73
#else
67 74
extern void __sigaction();
68 75
#define sigaction(sig, act, oact) __sigaction(sig, act, oact)
69 76
#endif
77
#endif /* __linux__ */
70 78
#endif /* CONFIG_SDL */
71 79

  
72 80
#include "disas.h"
......
637 645
#ifdef _WIN32
638 646
        return GetTickCount();
639 647
#else
640
        /* XXX: portability among Linux hosts */
641
        if (timer_freq == 100) {
642
            return times(NULL) * 10;
643
        } else {
644
            return ((int64_t)times(NULL) * 1000) / timer_freq;
648
        {
649
            struct tms tp;
650

  
651
            /* Note that using gettimeofday() is not a good solution
652
               for timers because its value change when the date is
653
               modified. */
654
            if (timer_freq == 100) {
655
                return times(&tp) * 10;
656
            } else {
657
                return ((int64_t)times(&tp) * 1000) / timer_freq;
658
            }
645 659
        }
646 660
#endif
647 661
    default:
......
964 978
#endif /* CONFIG_SLIRP */
965 979

  
966 980
#if !defined(_WIN32)
981
#ifdef _BSD
982
static int tun_open(char *ifname, int ifname_size)
983
{
984
    int fd;
985
    char *dev;
986
    struct stat s;
967 987

  
988
    fd = open("/dev/tap", O_RDWR);
989
    if (fd < 0) {
990
        fprintf(stderr, "warning: could not open /dev/tap: no virtual network emulation\n");
991
        return -1;
992
    }
993

  
994
    fstat(fd, &s);
995
    dev = devname(s.st_rdev, S_IFCHR);
996
    pstrcpy(ifname, ifname_size, dev);
997

  
998
    fcntl(fd, F_SETFL, O_NONBLOCK);
999
    return fd;
1000
}
1001
#else
968 1002
static int tun_open(char *ifname, int ifname_size)
969 1003
{
970 1004
    struct ifreq ifr;
......
989 1023
    fcntl(fd, F_SETFL, O_NONBLOCK);
990 1024
    return fd;
991 1025
}
1026
#endif
992 1027

  
993 1028
static void tun_send_packet(NetDriverState *nd, const uint8_t *buf, int size)
994 1029
{
......
2248 2283
    phys_ram_size = ram_size + vga_ram_size;
2249 2284

  
2250 2285
#ifdef CONFIG_SOFTMMU
2286
#ifdef _BSD
2287
    /* mallocs are always aligned on BSD. */
2288
    phys_ram_base = malloc(phys_ram_size);
2289
#else
2251 2290
    phys_ram_base = memalign(TARGET_PAGE_SIZE, phys_ram_size);
2291
#endif
2252 2292
    if (!phys_ram_base) {
2253 2293
        fprintf(stderr, "Could not allocate physical memory\n");
2254 2294
        exit(1);
b/vl.h
35 35
#include <errno.h>
36 36
#include <unistd.h>
37 37
#include <fcntl.h>
38
#include <sys/stat.h>
38 39

  
39 40
#ifndef O_LARGEFILE
40 41
#define O_LARGEFILE 0
......
49 50

  
50 51
#include "cpu.h"
51 52

  
53
#ifdef _BSD
54
#define lseek64 lseek
55
#define ftruncate64 ftruncate
56
#define mkstemp64 mkstemp
57
#define MAP_ANONYMOUS MAP_ANON
58
#endif
59

  
52 60
#ifndef glue
53 61
#define xglue(x, y) x ## y
54 62
#define glue(x, y) xglue(x, y)

Also available in: Unified diff