summaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorPeter Maydell2020-11-29 18:40:21 +0100
committerPeter Maydell2020-12-15 13:04:30 +0100
commit2c87548ef46040d0577cc362cab94561c1d98b8d (patch)
tree8332ce98acec8d09dbf58510e72832ccaa0ec24f /target
parenttarget/nios2: Move IIC code into CPU object proper (diff)
downloadqemu-2c87548ef46040d0577cc362cab94561c1d98b8d.tar.gz
qemu-2c87548ef46040d0577cc362cab94561c1d98b8d.tar.xz
qemu-2c87548ef46040d0577cc362cab94561c1d98b8d.zip
target/nios2: Move nios2_check_interrupts() into target/nios2
The function nios2_check_interrupts)() looks only at CPU-internal state; it belongs in target/nios2, not hw/nios2. Move it into the same file as its only caller, so it can just be local to that file. This removes the only remaining code from cpu_pic.c, so we can delete that file entirely. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20201129174022.26530-3-peter.maydell@linaro.org Reviewed-by: Wentong Wu <wentong.wu@intel.com> Tested-by: Wentong Wu <wentong.wu@intel.com>
Diffstat (limited to 'target')
-rw-r--r--target/nios2/cpu.h2
-rw-r--r--target/nios2/op_helper.c9
2 files changed, 9 insertions, 2 deletions
diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h
index b7efb54ba7..2ab82fdc71 100644
--- a/target/nios2/cpu.h
+++ b/target/nios2/cpu.h
@@ -201,8 +201,6 @@ void nios2_cpu_do_unaligned_access(CPUState *cpu, vaddr addr,
MMUAccessType access_type,
int mmu_idx, uintptr_t retaddr);
-void nios2_check_interrupts(CPUNios2State *env);
-
void do_nios2_semihosting(CPUNios2State *env);
#define CPU_RESOLVING_TYPE TYPE_NIOS2_CPU
diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c
index a60730faac..a59003855a 100644
--- a/target/nios2/op_helper.c
+++ b/target/nios2/op_helper.c
@@ -36,6 +36,15 @@ void helper_mmu_write(CPUNios2State *env, uint32_t rn, uint32_t v)
mmu_write(env, rn, v);
}
+static void nios2_check_interrupts(CPUNios2State *env)
+{
+ if (env->irq_pending &&
+ (env->regs[CR_STATUS] & CR_STATUS_PIE)) {
+ env->irq_pending = 0;
+ cpu_interrupt(env_cpu(env), CPU_INTERRUPT_HARD);
+ }
+}
+
void helper_check_interrupts(CPUNios2State *env)
{
qemu_mutex_lock_iothread();