From 3110e2925489c571901e945e315942ce84fe696f Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Fri, 15 Apr 2011 17:32:48 +0200 Subject: [PATCH] s390x: Enable s390x-softmmu target This patch adds some code paths for running s390x guest OSs without the need for KVM. Signed-off-by: Alexander Graf Signed-off-by: Aurelien Jarno --- cpu-exec.c | 8 ++++++++ target-s390x/exec.h | 11 ++++++++++- target-s390x/helper.c | 4 ++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cpu-exec.c b/cpu-exec.c index 5d6c9a8a1c..d57afef642 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -346,6 +346,8 @@ int cpu_exec(CPUState *env1) do_interrupt(env); #elif defined(TARGET_M68K) do_interrupt(0); +#elif defined(TARGET_S390X) + do_interrupt(env); #endif env->exception_index = -1; #endif @@ -560,6 +562,12 @@ int cpu_exec(CPUState *env1) do_interrupt(1); next_tb = 0; } +#elif defined(TARGET_S390X) && !defined(CONFIG_USER_ONLY) + if ((interrupt_request & CPU_INTERRUPT_HARD) && + (env->psw.mask & PSW_MASK_EXT)) { + do_interrupt(env); + next_tb = 0; + } #endif /* Don't use the cached interupt_request value, do_interrupt may have updated the EXITTB flag. */ diff --git a/target-s390x/exec.h b/target-s390x/exec.h index f7893f3877..7a87fffca6 100644 --- a/target-s390x/exec.h +++ b/target-s390x/exec.h @@ -31,7 +31,16 @@ register struct CPUS390XState *env asm(AREG0); static inline int cpu_has_work(CPUState *env) { - return env->interrupt_request & CPU_INTERRUPT_HARD; // guess + return ((env->interrupt_request & CPU_INTERRUPT_HARD) && + (env->psw.mask & PSW_MASK_EXT)); +} + +static inline void regs_to_env(void) +{ +} + +static inline void env_to_regs(void) +{ } static inline void cpu_pc_from_tb(CPUState *env, TranslationBlock* tb) diff --git a/target-s390x/helper.c b/target-s390x/helper.c index 4a5297be18..629dfd9708 100644 --- a/target-s390x/helper.c +++ b/target-s390x/helper.c @@ -82,3 +82,7 @@ int cpu_s390x_handle_mmu_fault (CPUState *env, target_ulong address, int rw, return 0; } #endif /* CONFIG_USER_ONLY */ + +void do_interrupt (CPUState *env) +{ +} -- 2.11.4.GIT