Message ID | 87iqelzx5h.fsf@inbox.ru |
---|---|
State | New |
Headers | show |
Hello! Is there any progress? Anything wrong? Aleksej Saushev <asau@inbox.ru> writes: > qemu 0.11.0 doesn't build on NetBSD out of the box, > it doesn't on FreeBSD and Dragonfly either. > > --- exec.c.orig 2009-09-23 23:01:32.000000000 +0400 > +++ exec.c 2009-09-30 14:03:55.000000000 +0400 > @@ -464,7 +464,7 @@ > exit(1); > } > } > -#elif defined(__FreeBSD__) || defined(__DragonFly__) > +#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) > { > int flags; > void *addr = NULL; > --- osdep.c.orig 2009-09-23 23:01:32.000000000 +0400 > +++ osdep.c 2009-09-30 14:05:39.000000000 +0400 > @@ -110,7 +110,7 @@ > void *ptr; > > /* no need (?) for a dummy file on OpenBSD/FreeBSD */ > -#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) > +#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) > int map_anon = MAP_ANON; > #else > int map_anon = 0; > @@ -181,7 +181,7 @@ > } > size = (size + 4095) & ~4095; > ftruncate(phys_ram_fd, phys_ram_size + size); > -#endif /* !(__OpenBSD__ || __FreeBSD__ || __DragonFly__) */ > +#endif /* !(__OpenBSD__ || __FreeBSD__ || __DragonFly__ || __NetBSD__) */ > ptr = mmap(NULL, > size, > PROT_WRITE | PROT_READ, map_anon | MAP_SHARED, > --- vl.c.orig 2009-09-23 23:01:32.000000000 +0400 > +++ vl.c 2009-09-30 14:10:21.000000000 +0400 > @@ -567,7 +567,7 @@ > { > use_rt_clock = 0; > #if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ > - || defined(__DragonFly__) > + || defined(__DragonFly__) || defined(__NetBSD__) > { > struct timespec ts; > if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { > @@ -580,7 +580,7 @@ > static int64_t get_clock(void) > { > #if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ > - || defined(__DragonFly__) > + || defined(__DragonFly__) || defined(__NetBSD__) > if (use_rt_clock) { > struct timespec ts; > clock_gettime(CLOCK_MONOTONIC, &ts); > --- cpu-exec.c.orig 2009-09-23 23:01:32.000000000 +0400 > +++ cpu-exec.c 2009-09-30 14:18:16.000000000 +0400 > @@ -1247,6 +1247,20 @@ > # define TRAP_sig(context) ((context)->uc_mcontext->es.trapno) > # define ERROR_sig(context) ((context)->uc_mcontext->es.err) > # define MASK_sig(context) ((context)->uc_sigmask) > +#elif defined (__NetBSD__) > +# include <ucontext.h> > + > +# define EIP_sig(context) ((context)->uc_mcontext.__gregs[_REG_EIP]) > +# define TRAP_sig(context) ((context)->uc_mcontext.__gregs[_REG_TRAPNO]) > +# define ERROR_sig(context) ((context)->uc_mcontext.__gregs[_REG_ERR]) > +# define MASK_sig(context) ((context)->uc_sigmask) > +#elif defined (__FreeBSD__) || defined(__DragonFly__) > +# include <ucontext.h> > + > +# define EIP_sig(context) (*((unsigned long*)&(context)->uc_mcontext.mc_eip)) > +# define TRAP_sig(context) ((context)->uc_mcontext.mc_trapno) > +# define ERROR_sig(context) ((context)->uc_mcontext.mc_err) > +# define MASK_sig(context) ((context)->uc_sigmask) > #elif defined(__OpenBSD__) > # define EIP_sig(context) ((context)->sc_eip) > # define TRAP_sig(context) ((context)->sc_trapno) > @@ -1263,7 +1277,9 @@ > void *puc) > { > siginfo_t *info = pinfo; > -#if defined(__OpenBSD__) > +#if defined(__NetBSD__) || defined (__FreeBSD__) || defined(__DragonFly__) > + ucontext_t *uc = puc; > +#elif defined(__OpenBSD__) > struct sigcontext *uc = puc; > #else > struct ucontext *uc = puc;
--- exec.c.orig 2009-09-23 23:01:32.000000000 +0400 +++ exec.c 2009-09-30 14:03:55.000000000 +0400 @@ -464,7 +464,7 @@ exit(1); } } -#elif defined(__FreeBSD__) || defined(__DragonFly__) +#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) { int flags; void *addr = NULL; --- osdep.c.orig 2009-09-23 23:01:32.000000000 +0400 +++ osdep.c 2009-09-30 14:05:39.000000000 +0400 @@ -110,7 +110,7 @@ void *ptr; /* no need (?) for a dummy file on OpenBSD/FreeBSD */ -#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) +#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) int map_anon = MAP_ANON; #else int map_anon = 0; @@ -181,7 +181,7 @@ } size = (size + 4095) & ~4095; ftruncate(phys_ram_fd, phys_ram_size + size); -#endif /* !(__OpenBSD__ || __FreeBSD__ || __DragonFly__) */ +#endif /* !(__OpenBSD__ || __FreeBSD__ || __DragonFly__ || __NetBSD__) */ ptr = mmap(NULL, size, PROT_WRITE | PROT_READ, map_anon | MAP_SHARED, --- vl.c.orig 2009-09-23 23:01:32.000000000 +0400 +++ vl.c 2009-09-30 14:10:21.000000000 +0400 @@ -567,7 +567,7 @@ { use_rt_clock = 0; #if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ - || defined(__DragonFly__) + || defined(__DragonFly__) || defined(__NetBSD__) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { @@ -580,7 +580,7 @@ static int64_t get_clock(void) { #if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ - || defined(__DragonFly__) + || defined(__DragonFly__) || defined(__NetBSD__) if (use_rt_clock) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); --- cpu-exec.c.orig 2009-09-23 23:01:32.000000000 +0400 +++ cpu-exec.c 2009-09-30 14:18:16.000000000 +0400 @@ -1247,6 +1247,20 @@ # define TRAP_sig(context) ((context)->uc_mcontext->es.trapno) # define ERROR_sig(context) ((context)->uc_mcontext->es.err) # define MASK_sig(context) ((context)->uc_sigmask) +#elif defined (__NetBSD__) +# include <ucontext.h> + +# define EIP_sig(context) ((context)->uc_mcontext.__gregs[_REG_EIP]) +# define TRAP_sig(context) ((context)->uc_mcontext.__gregs[_REG_TRAPNO]) +# define ERROR_sig(context) ((context)->uc_mcontext.__gregs[_REG_ERR]) +# define MASK_sig(context) ((context)->uc_sigmask) +#elif defined (__FreeBSD__) || defined(__DragonFly__) +# include <ucontext.h> + +# define EIP_sig(context) (*((unsigned long*)&(context)->uc_mcontext.mc_eip)) +# define TRAP_sig(context) ((context)->uc_mcontext.mc_trapno) +# define ERROR_sig(context) ((context)->uc_mcontext.mc_err) +# define MASK_sig(context) ((context)->uc_sigmask) #elif defined(__OpenBSD__) # define EIP_sig(context) ((context)->sc_eip) # define TRAP_sig(context) ((context)->sc_trapno) @@ -1263,7 +1277,9 @@ void *puc) { siginfo_t *info = pinfo; -#if defined(__OpenBSD__) +#if defined(__NetBSD__) || defined (__FreeBSD__) || defined(__DragonFly__) + ucontext_t *uc = puc; +#elif defined(__OpenBSD__) struct sigcontext *uc = puc; #else struct ucontext *uc = puc;