[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] siginfo fix for Darwin/Mac OS X on PowerPC and
From: |
Thiemo Seufer |
Subject: |
Re: [Qemu-devel] [PATCH] siginfo fix for Darwin/Mac OS X on PowerPC and cleanup |
Date: |
Thu, 18 Jan 2007 22:57:29 +0000 |
User-agent: |
Mutt/1.5.13 (2006-08-11) |
Pierre d'Herbemont wrote:
> Hi,
>
> This patch addresses cpu-exec.c compilation on Mac OS X/ppc. It also
> cleans up unused Macro definition.
>
> Pierre.
> Index: cpu-exec.c
> ===================================================================
> RCS file: /sources/qemu/qemu/cpu-exec.c,v
> retrieving revision 1.88
> diff -u -r1.88 cpu-exec.c
> --- cpu-exec.c 7 Dec 2006 18:28:42 -0000 1.88
> +++ cpu-exec.c 18 Jan 2007 12:30:04 -0000
> @@ -1334,51 +1334,30 @@
> /* All Registers access - only for local access */
> # define REG_sig(reg_name, context)
> ((context)->uc_mcontext.regs->reg_name)
> /* Gpr Registers access */
> -# define GPR_sig(reg_num, context) REG_sig(gpr[reg_num], context)
> # define IAR_sig(context) REG_sig(nip, context) /*
> Program counter */
> -# define MSR_sig(context) REG_sig(msr, context) /*
> Machine State Register (Supervisor) */
> -# define CTR_sig(context) REG_sig(ctr, context) /*
> Count register */
> -# define XER_sig(context) REG_sig(xer, context) /* User's
> integer exception register */
> -# define LR_sig(context) REG_sig(link, context) /* Link
> register */
> -# define CR_sig(context) REG_sig(ccr, context) /*
> Condition register */
> -/* Float Registers access */
> -# define FLOAT_sig(reg_num, context)
> (((double*)((char*)((context)->uc_mcontext.regs+48*4)))[reg_num])
> # define FPSCR_sig(context)
> (*(int*)((char*)((context)->uc_mcontext.regs+(48+32*2)*4)))
> /* Exception Registers access */
> -# define DAR_sig(context) REG_sig(dar, context)
> # define DSISR_sig(context) REG_sig(dsisr, context)
> # define TRAP_sig(context) REG_sig(trap, context)
> #endif /* linux */
>
> #ifdef __APPLE__
> # include <sys/ucontext.h>
> -typedef struct ucontext SIGCONTEXT;
> /* All Registers access - only for local access */
> # define REG_sig(reg_name, context)
> ((context)->uc_mcontext->ss.reg_name)
> -# define FLOATREG_sig(reg_name, context)
> ((context)->uc_mcontext->fs.reg_name)
> # define EXCEPREG_sig(reg_name, context)
> ((context)->uc_mcontext->es.reg_name)
> -# define VECREG_sig(reg_name, context)
> ((context)->uc_mcontext->vs.reg_name)
> /* Gpr Registers access */
> -# define GPR_sig(reg_num, context) REG_sig(r##reg_num, context)
> # define IAR_sig(context) REG_sig(srr0, context) /*
> Program counter */
> -# define MSR_sig(context) REG_sig(srr1, context) /*
> Machine State Register (Supervisor) */
> -# define CTR_sig(context) REG_sig(ctr, context)
> -# define XER_sig(context) REG_sig(xer, context) /* Link
> register */
> -# define LR_sig(context) REG_sig(lr, context) /* User's
> integer exception register */
> -# define CR_sig(context) REG_sig(cr, context) /*
> Condition register */
> -/* Float Registers access */
> -# define FLOAT_sig(reg_num, context) FLOATREG_sig(fpregs[reg_num],
> context)
> -# define FPSCR_sig(context) ((double)FLOATREG_sig(fpscr,
> context))
> /* Exception Registers access */
> -# define DAR_sig(context) EXCEPREG_sig(dar, context)
> /* Fault registers for coredump */
> # define DSISR_sig(context) EXCEPREG_sig(dsisr, context)
> # define TRAP_sig(context) EXCEPREG_sig(exception,
> context) /* number of powerpc exception taken */
> #endif /* __APPLE__ */
It might be better to keep the full set around for documentation.
> -int cpu_signal_handler(int host_signum, struct siginfo *info,
> +int cpu_signal_handler(int host_signum, struct siginfo *pinfo,
> void *puc)
> {
> struct ucontext *uc = puc;
> + siginfo_t *info = pinfo;
> unsigned long pc;
> int is_write;
Why does this make a difference?
Thiemo