From 7a004907c750f754bf3686abb329813c7fd2efc7 Mon Sep 17 00:00:00 2001 From: Peter Crosthwaite <crosthwaitepeter@gmail.com> Date: Thu, 15 Feb 2018 14:53:32 -0500 Subject: [PATCH] translate-all: Move tcg_handle_interrupt() to -common Move this function to common code. It has no arch specific dependencies. Prepares support for multi-arch where the translate-all interface needs to be virtualised. One less thing to virtualise. Backports commit 9b68a7754a892d8deb7696cfe609fe2ec3c6034a from qemu --- qemu/Makefile.target | 1 + qemu/translate-all.c | 10 ---------- qemu/translate-common.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 qemu/translate-common.c diff --git a/qemu/Makefile.target b/qemu/Makefile.target index 7fe3535b..088c665f 100644 --- a/qemu/Makefile.target +++ b/qemu/Makefile.target @@ -41,6 +41,7 @@ all: $(PROGS) ######################################################### # cpu emulator library obj-y = exec.o translate-all.o cpu-exec.o +obj-y += translate-common.o obj-y += cpu-exec-common.o obj-y += tcg/tcg.o tcg/tcg-op.o tcg/optimize.o obj-y += fpu/softfloat.o diff --git a/qemu/translate-all.c b/qemu/translate-all.c index 2bf73769..de1c33f5 100644 --- a/qemu/translate-all.c +++ b/qemu/translate-all.c @@ -1541,16 +1541,6 @@ void tb_check_watchpoint(CPUState *cpu) } #ifndef CONFIG_USER_ONLY -/* mask must never be zero, except for A20 change call */ -static void tcg_handle_interrupt(CPUState *cpu, int mask) -{ - cpu->interrupt_request |= mask; - - cpu->tcg_exit_req = 1; -} - -CPUInterruptHandler cpu_interrupt_handler = tcg_handle_interrupt; - /* in deterministic execution mode, instructions doing device I/Os must be at the end of the TB */ void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr) diff --git a/qemu/translate-common.c b/qemu/translate-common.c new file mode 100644 index 00000000..98e1bf83 --- /dev/null +++ b/qemu/translate-common.c @@ -0,0 +1,33 @@ +/* + * Host code generation common components + * + * Copyright (c) 2015 Peter Crosthwaite <crosthwaite.peter@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "qemu-common.h" +#include "qom/cpu.h" + +#ifndef CONFIG_USER_ONLY +/* mask must never be zero, except for A20 change call */ +static void tcg_handle_interrupt(CPUState *cpu, int mask) +{ + cpu->interrupt_request |= mask; + + cpu->tcg_exit_req = 1; +} + +CPUInterruptHandler cpu_interrupt_handler = tcg_handle_interrupt; +#endif