diff options
author | David Hildenbrand <dahi@linux.vnet.ibm.com> | 2015-02-24 14:15:22 +0100 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2015-03-10 09:26:22 +0100 |
commit | 5172b780c5d2e37ae0a2b48813fda0e54ea15c38 (patch) | |
tree | 6043e83c60ca3e92234a105a79e1a61ff226c986 /target-s390x | |
parent | 51628b1898b6bc15306e5c831962f858c2b48eb5 (diff) |
s390x: introduce defines for SIGP condition codes
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.huck@de.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Message-Id: <1424783731-43426-2-git-send-email-jfrei@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'target-s390x')
-rw-r--r-- | target-s390x/cpu.h | 9 | ||||
-rw-r--r-- | target-s390x/kvm.c | 14 | ||||
-rw-r--r-- | 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 b6b46323dc..1cdfe5edaf 100644 --- a/target-s390x/cpu.h +++ b/target-s390x/cpu.h @@ -864,6 +864,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 @@ -877,7 +878,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 d7c57d9338..3f7e9adfe1 100644 --- a/target-s390x/kvm.c +++ b/target-s390x/kvm.c @@ -1178,37 +1178,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 1c3df8e018..e1007fa35b 100644 --- a/target-s390x/misc_helper.c +++ b/target-s390x/misc_helper.c @@ -456,7 +456,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); @@ -490,7 +490,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; |