[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH ARM v3 4/7] mini-os: moved events code under arch
Thomas Leonard, le Wed 11 Jun 2014 11:30:15 +0100, a écrit : > From: Karim Raslan <karim.allah.ahmed@xxxxxxxxx> > > This is all code motion, except that we now initialise > the ev_actions array before calling the arch-specific code > to make it more robust against future changes. > > Signed-off-by: Karim Allah Ahmed <karim.allah.ahmed@xxxxxxxxx> > [talex5@xxxxxxxxx: separated from big ARM commit] > Signed-off-by: Thomas Leonard <talex5@xxxxxxxxx> Acked-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> > --- > extras/mini-os/arch/x86/events.c | 31 +++++++++++++++++++++++++++++++ > extras/mini-os/events.c | 24 ++++-------------------- > extras/mini-os/include/events.h | 3 +++ > 3 files changed, 38 insertions(+), 20 deletions(-) > create mode 100644 extras/mini-os/arch/x86/events.c > > diff --git a/extras/mini-os/arch/x86/events.c > b/extras/mini-os/arch/x86/events.c > new file mode 100644 > index 0000000..e420a98 > --- /dev/null > +++ b/extras/mini-os/arch/x86/events.c > @@ -0,0 +1,31 @@ > +#include <mini-os/os.h> > +#include <mini-os/mm.h> > +#include <mini-os/events.h> > + > +#if defined(__x86_64__) > +char irqstack[2 * STACK_SIZE]; > + > +static struct pda > +{ > + int irqcount; /* offset 0 (used in x86_64.S) */ > + char *irqstackptr; /* 8 */ > +} cpu0_pda; > +#endif > + > +void arch_init_events(void) > +{ > +#if defined(__x86_64__) > + asm volatile("movl %0,%%fs ; movl %0,%%gs" :: "r" (0)); > + wrmsrl(0xc0000101, &cpu0_pda); /* 0xc0000101 is MSR_GS_BASE */ > + cpu0_pda.irqcount = -1; > + cpu0_pda.irqstackptr = (void*) (((unsigned long)irqstack + 2 * > STACK_SIZE) > + & ~(STACK_SIZE - 1)); > +#endif > +} > + > +void arch_fini_events(void) > +{ > +#if defined(__x86_64__) > + wrmsrl(0xc0000101, NULL); /* 0xc0000101 is MSR_GS_BASE */ > +#endif > +} > diff --git a/extras/mini-os/events.c b/extras/mini-os/events.c > index 2da9b01..d60630b 100644 > --- a/extras/mini-os/events.c > +++ b/extras/mini-os/events.c > @@ -167,44 +167,28 @@ evtchn_port_t bind_pirq(uint32_t pirq, int will_share, > return op.port; > } > > -#if defined(__x86_64__) > -char irqstack[2 * STACK_SIZE]; > - > -static struct pda > -{ > - int irqcount; /* offset 0 (used in x86_64.S) */ > - char *irqstackptr; /* 8 */ > -} cpu0_pda; > -#endif > - > /* > * Initially all events are without a handler and disabled > */ > void init_events(void) > { > int i; > -#if defined(__x86_64__) > - asm volatile("movl %0,%%fs ; movl %0,%%gs" :: "r" (0)); > - wrmsrl(0xc0000101, &cpu0_pda); /* 0xc0000101 is MSR_GS_BASE */ > - cpu0_pda.irqcount = -1; > - cpu0_pda.irqstackptr = (void*) (((unsigned long)irqstack + 2 * > STACK_SIZE) > - & ~(STACK_SIZE - 1)); > -#endif > + > /* initialize event handler */ > for ( i = 0; i < NR_EVS; i++ ) > { > ev_actions[i].handler = default_handler; > mask_evtchn(i); > } > + > + arch_init_events(); > } > > void fini_events(void) > { > /* Dealloc all events */ > unbind_all_ports(); > -#if defined(__x86_64__) > - wrmsrl(0xc0000101, NULL); /* 0xc0000101 is MSR_GS_BASE */ > -#endif > + arch_fini_events(); > } > > void default_handler(evtchn_port_t port, struct pt_regs *regs, void *ignore) > diff --git a/extras/mini-os/include/events.h b/extras/mini-os/include/events.h > index 0e9d3a7..0452d21 100644 > --- a/extras/mini-os/include/events.h > +++ b/extras/mini-os/include/events.h > @@ -25,6 +25,9 @@ > typedef void (*evtchn_handler_t)(evtchn_port_t, struct pt_regs *, void *); > > /* prototypes */ > +void arch_init_events(void); > +void arch_fini_events(void); > + > int do_event(evtchn_port_t port, struct pt_regs *regs); > evtchn_port_t bind_virq(uint32_t virq, evtchn_handler_t handler, void *data); > evtchn_port_t bind_pirq(uint32_t pirq, int will_share, evtchn_handler_t > handler, void *data); > -- > 2.0.0 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel > -- Samuel <N> un driver qui fait quoi, alors ? <y> ben pour les bips <s> pour passer les oops en morse -+- #ens-mim - vive les rapports de bug -+- _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |