From mboxrd@z Thu Jan 1 00:00:00 1970 From: Suraj Jitindar Singh Subject: [kvm-unit-tests PATCH 2/4] lib/powerpc: Add generic decrementer exception handler Date: Fri, 5 Aug 2016 17:33:11 +1000 Message-ID: <1470382393-24209-2-git-send-email-sjitindarsingh@gmail.com> References: <1470382393-24209-1-git-send-email-sjitindarsingh@gmail.com> Cc: sjitindarsingh@gmail.com, drjones@redhat.com, pbonzini@redhat.com To: kvm@vger.kernel.org Return-path: Received: from mail-pf0-f194.google.com ([209.85.192.194]:34612 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751930AbcHEHdc (ORCPT ); Fri, 5 Aug 2016 03:33:32 -0400 Received: by mail-pf0-f194.google.com with SMTP id g202so19746161pfb.1 for ; Fri, 05 Aug 2016 00:33:32 -0700 (PDT) In-Reply-To: <1470382393-24209-1-git-send-email-sjitindarsingh@gmail.com> Sender: kvm-owner@vger.kernel.org List-ID: 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 --- 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 + +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 +#include +#include + +/* + * 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) -- 2.5.5