[Qemu-devel] testing qemu svn r6082 on FreeBSD - virtio-net,
hpet, vmmouse/vga, got bsd-user to build,
and an updated version of the FreeBSD -clock dynticks patch
Juergen Lock
nox at jelal.kn-bremen.de
Sat Dec 20 15:57:44 PST 2008
In article <f43fc5580812201321u6478cb85qa33a7bb2ec4e9038 at mail.gmail.com> you write:
>On 12/19/08, Juergen Lock <nox at jelal.kn-bremen.de> wrote:
>> +#elif defined(__FreeBSD__)
>> +# include <sys/ucontext.h>
>> +
>> +# define RIP_sig(context) (*((unsigned long*)&(context)->uc_mcontext.mc_rip))
>> +# define TRAP_sig(context) ((context)->uc_mcontext.mc_trapno)
>> +# define ERROR_sig(context) ((context)->uc_mcontext.mc_err)
>> #else
>> #define QEMU_UC_MCONTEXT_GREGS(uc, reg) (uc)->uc_mcontext.gregs[(reg)]
>> #define QEMU_UC_MACHINE_PC(uc) QEMU_UC_MCONTEXT_GREGS(uc, REG_RIP)
>
>> +#ifdef __FreeBSD__
>> + pc = RIP_sig(uc);
>> + return handle_cpu_signal(pc, (unsigned long)info->si_addr,
>> + TRAP_sig(uc) == 0xe ?
>> + (ERROR_sig(uc) >> 1) & 1 : 0,
>> + &uc->uc_sigmask, puc);
>> +#else
>> pc = QEMU_UC_MACHINE_PC(uc);
>> return handle_cpu_signal(pc, (unsigned long)info->si_addr,
>> QEMU_UC_MCONTEXT_GREGS(uc, REG_TRAPNO) == 0xe ?
>> (QEMU_UC_MCONTEXT_GREGS(uc, REG_ERR) >> 1) & 1 : 0,
>> &uc->uc_sigmask, puc);
>> +#endif
>
>The idea here was that all OS define macros with same names so that
>the code below does not get any more complex. Maybe the GREGS macro
>was too generic, and should be replaced with one that only returns the
>trap and error values.
>
Yeah I was too lazy to figure out the preprocessor magic needed
to get the GREGS way working so I simply reused the macros from the
i386 case. :)
>> And finally the updated dynticks patch:
>
>This looks OK, please submit separately.
OK will do.
Thanx,
Juergen
More information about the freebsd-emulation
mailing list