Message ID | 1470382393-24209-2-git-send-email-sjitindarsingh@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Please CC the powerpc maintainers on powerpc patches, see the MAINTAINERS file. On Fri, Aug 05, 2016 at 05:33:11PM +1000, Suraj Jitindar Singh wrote: > Add the lib/powerpc/handlers.c file and associated header files as a place > to implement generic exception handler functions for inclusion in tests. > > Add a generic exception handler for a decrementer (0x900) interrupt which > will reset the decrementer to its maximum value. > > Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> > --- > lib/powerpc/asm/handlers.h | 8 ++++++++ > lib/powerpc/handlers.c | 26 ++++++++++++++++++++++++++ > lib/ppc64/asm/handlers.h | 1 + > powerpc/Makefile.common | 1 + > 4 files changed, 36 insertions(+) > create mode 100644 lib/powerpc/asm/handlers.h > create mode 100644 lib/powerpc/handlers.c > create mode 100644 lib/ppc64/asm/handlers.h > > diff --git a/lib/powerpc/asm/handlers.h b/lib/powerpc/asm/handlers.h > new file mode 100644 > index 0000000..1475052 > --- /dev/null > +++ b/lib/powerpc/asm/handlers.h > @@ -0,0 +1,8 @@ > +#ifndef _ASMPOWERPC_HANDLERS_H_ > +#define _ASMPOWERPC_HANDLERS_H_ > + > +#include <asm/ptrace.h> > + > +extern void dec_except_handler(struct pt_regs *regs, void *data); > + > +#endif /* _ASMPOWERPC_HANDLERS_H_ */ > diff --git a/lib/powerpc/handlers.c b/lib/powerpc/handlers.c > new file mode 100644 > index 0000000..1fb35d7 > --- /dev/null > +++ b/lib/powerpc/handlers.c > @@ -0,0 +1,26 @@ > +/* > + * Generic exception handlers for registration and use in tests > + * > + * Copyright 2016 Suraj Jitindar Singh, IBM. > + * > + * This work is licensed under the terms of the GNU LGPL, version 2. > + */ > + > +#include <libcflat.h> > +#include <asm/handlers.h> > +#include <asm/ptrace.h> > + > +/* > + * Generic handler for decrementer exceptions (0x900) > + * Just reset the decrementer back to its maximum value (0x7FFFFFFF) > + */ > +void dec_except_handler(__attribute__ ((unused)) struct pt_regs *regs, > + __attribute__ ((unused)) void *data) We have __unused defined in libcflat.h, and my preference is to follow the variable with it, e.g. 'int foo __unused' > +{ > + uint32_t dec = 0x7FFFFFFF; > + > + asm volatile ( "mtdec %0" : > + : "r" (dec) > + : > + ); > +} > diff --git a/lib/ppc64/asm/handlers.h b/lib/ppc64/asm/handlers.h > new file mode 100644 > index 0000000..92e6fb2 > --- /dev/null > +++ b/lib/ppc64/asm/handlers.h > @@ -0,0 +1 @@ > +#include "../../powerpc/asm/handlers.h" > diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common > index 3f8887d..404194b 100644 > --- a/powerpc/Makefile.common > +++ b/powerpc/Makefile.common > @@ -36,6 +36,7 @@ cflatobjs += lib/powerpc/hcall.o > cflatobjs += lib/powerpc/setup.o > cflatobjs += lib/powerpc/rtas.o > cflatobjs += lib/powerpc/processor.o > +cflatobjs += lib/powerpc/handlers.o > > FLATLIBS = $(libcflat) $(LIBFDT_archive) > %.elf: CFLAGS += $(arch_CFLAGS) > -- > 2.5.5 > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 2016-08-05 at 10:23 +0200, Andrew Jones wrote: > Please CC the powerpc maintainers on powerpc patches, see > the MAINTAINERS file. Woops, didn't see the maintainers file, will be sure to do that on subsequent patches > > On Fri, Aug 05, 2016 at 05:33:11PM +1000, Suraj Jitindar Singh wrote: > > > > Add the lib/powerpc/handlers.c file and associated header files as > > a place > > to implement generic exception handler functions for inclusion in > > tests. > > > > Add a generic exception handler for a decrementer (0x900) interrupt > > which > > will reset the decrementer to its maximum value. > > > > Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> > > --- > > lib/powerpc/asm/handlers.h | 8 ++++++++ > > lib/powerpc/handlers.c | 26 ++++++++++++++++++++++++++ > > lib/ppc64/asm/handlers.h | 1 + > > powerpc/Makefile.common | 1 + > > 4 files changed, 36 insertions(+) > > create mode 100644 lib/powerpc/asm/handlers.h > > create mode 100644 lib/powerpc/handlers.c > > create mode 100644 lib/ppc64/asm/handlers.h > > > > diff --git a/lib/powerpc/asm/handlers.h > > b/lib/powerpc/asm/handlers.h > > new file mode 100644 > > index 0000000..1475052 > > --- /dev/null > > +++ b/lib/powerpc/asm/handlers.h > > @@ -0,0 +1,8 @@ > > +#ifndef _ASMPOWERPC_HANDLERS_H_ > > +#define _ASMPOWERPC_HANDLERS_H_ > > + > > +#include <asm/ptrace.h> > > + > > +extern void dec_except_handler(struct pt_regs *regs, void *data); > > + > > +#endif /* _ASMPOWERPC_HANDLERS_H_ */ > > diff --git a/lib/powerpc/handlers.c b/lib/powerpc/handlers.c > > new file mode 100644 > > index 0000000..1fb35d7 > > --- /dev/null > > +++ b/lib/powerpc/handlers.c > > @@ -0,0 +1,26 @@ > > +/* > > + * Generic exception handlers for registration and use in tests > > + * > > + * Copyright 2016 Suraj Jitindar Singh, IBM. > > + * > > + * This work is licensed under the terms of the GNU LGPL, version > > 2. > > + */ > > + > > +#include <libcflat.h> > > +#include <asm/handlers.h> > > +#include <asm/ptrace.h> > > + > > +/* > > + * Generic handler for decrementer exceptions (0x900) > > + * Just reset the decrementer back to its maximum value > > (0x7FFFFFFF) > > + */ > > +void dec_except_handler(__attribute__ ((unused)) struct pt_regs > > *regs, > > + __attribute__ ((unused)) void *data) > We have __unused defined in libcflat.h, and my preference is to > follow > the variable with it, e.g. 'int foo __unused' Ok, I'll change this > > > > > +{ > > + uint32_t dec = 0x7FFFFFFF; > > + > > + asm volatile ( "mtdec %0" : > > + : "r" (dec) > > + : > > + ); > > +} > > diff --git a/lib/ppc64/asm/handlers.h b/lib/ppc64/asm/handlers.h > > new file mode 100644 > > index 0000000..92e6fb2 > > --- /dev/null > > +++ b/lib/ppc64/asm/handlers.h > > @@ -0,0 +1 @@ > > +#include "../../powerpc/asm/handlers.h" > > diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common > > index 3f8887d..404194b 100644 > > --- a/powerpc/Makefile.common > > +++ b/powerpc/Makefile.common > > @@ -36,6 +36,7 @@ cflatobjs += lib/powerpc/hcall.o > > cflatobjs += lib/powerpc/setup.o > > cflatobjs += lib/powerpc/rtas.o > > cflatobjs += lib/powerpc/processor.o > > +cflatobjs += lib/powerpc/handlers.o > > > > FLATLIBS = $(libcflat) $(LIBFDT_archive) > > %.elf: CFLAGS += $(arch_CFLAGS) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/lib/powerpc/asm/handlers.h b/lib/powerpc/asm/handlers.h new file mode 100644 index 0000000..1475052 --- /dev/null +++ b/lib/powerpc/asm/handlers.h @@ -0,0 +1,8 @@ +#ifndef _ASMPOWERPC_HANDLERS_H_ +#define _ASMPOWERPC_HANDLERS_H_ + +#include <asm/ptrace.h> + +extern void dec_except_handler(struct pt_regs *regs, void *data); + +#endif /* _ASMPOWERPC_HANDLERS_H_ */ diff --git a/lib/powerpc/handlers.c b/lib/powerpc/handlers.c new file mode 100644 index 0000000..1fb35d7 --- /dev/null +++ b/lib/powerpc/handlers.c @@ -0,0 +1,26 @@ +/* + * Generic exception handlers for registration and use in tests + * + * Copyright 2016 Suraj Jitindar Singh, IBM. + * + * This work is licensed under the terms of the GNU LGPL, version 2. + */ + +#include <libcflat.h> +#include <asm/handlers.h> +#include <asm/ptrace.h> + +/* + * Generic handler for decrementer exceptions (0x900) + * Just reset the decrementer back to its maximum value (0x7FFFFFFF) + */ +void dec_except_handler(__attribute__ ((unused)) struct pt_regs *regs, + __attribute__ ((unused)) void *data) +{ + uint32_t dec = 0x7FFFFFFF; + + asm volatile ( "mtdec %0" : + : "r" (dec) + : + ); +} diff --git a/lib/ppc64/asm/handlers.h b/lib/ppc64/asm/handlers.h new file mode 100644 index 0000000..92e6fb2 --- /dev/null +++ b/lib/ppc64/asm/handlers.h @@ -0,0 +1 @@ +#include "../../powerpc/asm/handlers.h" diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common index 3f8887d..404194b 100644 --- a/powerpc/Makefile.common +++ b/powerpc/Makefile.common @@ -36,6 +36,7 @@ cflatobjs += lib/powerpc/hcall.o cflatobjs += lib/powerpc/setup.o cflatobjs += lib/powerpc/rtas.o cflatobjs += lib/powerpc/processor.o +cflatobjs += lib/powerpc/handlers.o FLATLIBS = $(libcflat) $(LIBFDT_archive) %.elf: CFLAGS += $(arch_CFLAGS)
Add the lib/powerpc/handlers.c file and associated header files as a place to implement generic exception handler functions for inclusion in tests. Add a generic exception handler for a decrementer (0x900) interrupt which will reset the decrementer to its maximum value. Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> --- lib/powerpc/asm/handlers.h | 8 ++++++++ lib/powerpc/handlers.c | 26 ++++++++++++++++++++++++++ lib/ppc64/asm/handlers.h | 1 + powerpc/Makefile.common | 1 + 4 files changed, 36 insertions(+) create mode 100644 lib/powerpc/asm/handlers.h create mode 100644 lib/powerpc/handlers.c create mode 100644 lib/ppc64/asm/handlers.h