From: David Hildenbrand <d...@linux.vnet.ibm.com> This patch introduces defines for the SIGP condition codes and replaces all occurrences of numeral condition codes with the new defines.
Reviewed-by: Cornelia Huck <cornelia.h...@de.ibm.com> Signed-off-by: Jens Freimann <jf...@linux.vnet.ibm.com> Signed-off-by: David Hildenbrand <d...@linux.vnet.ibm.com> --- target-s390x/cpu.h | 9 ++++++++- target-s390x/kvm.c | 14 +++++++------- target-s390x/misc_helper.c | 4 ++-- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h index 2e2554c..e6edb72 100644 --- a/target-s390x/cpu.h +++ b/target-s390x/cpu.h @@ -856,6 +856,7 @@ struct sysib_322 { #define SK_F (0x1 << 3) #define SK_ACC_MASK (0xf << 4) +/* SIGP order codes */ #define SIGP_SENSE 0x01 #define SIGP_EXTERNAL_CALL 0x02 #define SIGP_EMERGENCY 0x03 @@ -869,7 +870,13 @@ struct sysib_322 { #define SIGP_STORE_STATUS_ADDR 0x0e #define SIGP_SET_ARCH 0x12 -/* cpu status bits */ +/* SIGP condition codes */ +#define SIGP_CC_ORDER_CODE_ACCEPTED 0 +#define SIGP_CC_STATUS_STORED 1 +#define SIGP_CC_BUSY 2 +#define SIGP_CC_NOT_OPERATIONAL 3 + +/* SIGP status bits */ #define SIGP_STAT_EQUIPMENT_CHECK 0x80000000UL #define SIGP_STAT_INCORRECT_STATE 0x00000200UL #define SIGP_STAT_INVALID_PARAMETER 0x00000100UL diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c index 6f2d5b4..91b0257 100644 --- a/target-s390x/kvm.c +++ b/target-s390x/kvm.c @@ -1165,37 +1165,37 @@ static int handle_sigp(S390CPU *cpu, struct kvm_run *run, uint8_t ipa1) cpu_addr = env->regs[ipa1 & 0x0f]; target_cpu = s390_cpu_addr2state(cpu_addr); if (target_cpu == NULL) { - cc = 3; /* not operational */ + cc = SIGP_CC_NOT_OPERATIONAL; goto out; } switch (order_code) { case SIGP_START: run_on_cpu(CPU(target_cpu), sigp_cpu_start, CPU(target_cpu)); - cc = 0; + cc = SIGP_CC_ORDER_CODE_ACCEPTED; break; case SIGP_RESTART: run_on_cpu(CPU(target_cpu), sigp_cpu_restart, CPU(target_cpu)); - cc = 0; + cc = SIGP_CC_ORDER_CODE_ACCEPTED; break; case SIGP_SET_ARCH: *statusreg &= 0xffffffff00000000UL; *statusreg |= SIGP_STAT_INVALID_PARAMETER; - cc = 1; /* status stored */ + cc = SIGP_CC_STATUS_STORED; break; case SIGP_INITIAL_CPU_RESET: run_on_cpu(CPU(target_cpu), sigp_initial_cpu_reset, CPU(target_cpu)); - cc = 0; + cc = SIGP_CC_ORDER_CODE_ACCEPTED; break; case SIGP_CPU_RESET: run_on_cpu(CPU(target_cpu), sigp_cpu_reset, CPU(target_cpu)); - cc = 0; + cc = SIGP_CC_ORDER_CODE_ACCEPTED; break; default: DPRINTF("KVM: unknown SIGP: 0x%x\n", order_code); *statusreg &= 0xffffffff00000000UL; *statusreg |= SIGP_STAT_INVALID_ORDER; - cc = 1; /* status stored */ + cc = SIGP_CC_STATUS_STORED; break; } diff --git a/target-s390x/misc_helper.c b/target-s390x/misc_helper.c index ef9758a..bfd9809 100644 --- a/target-s390x/misc_helper.c +++ b/target-s390x/misc_helper.c @@ -427,7 +427,7 @@ uint32_t HELPER(stsi)(CPUS390XState *env, uint64_t a0, uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1, uint64_t cpu_addr) { - int cc = 0; + int cc = SIGP_CC_ORDER_CODE_ACCEPTED; HELPER_LOG("%s: %016" PRIx64 " %08x %016" PRIx64 "\n", __func__, order_code, r1, cpu_addr); @@ -461,7 +461,7 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1, default: /* unknown sigp */ fprintf(stderr, "XXX unknown sigp: 0x%" PRIx64 "\n", order_code); - cc = 3; + cc = SIGP_CC_NOT_OPERATIONAL; } return cc; -- 2.1.4