Dirtying the CC allows us to find missing CC changes when sigp is emulated. Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> --- lib/s390x/asm/sigp.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/s390x/asm/sigp.h b/lib/s390x/asm/sigp.h index 61d2c625..d73be1ef 100644 --- a/lib/s390x/asm/sigp.h +++ b/lib/s390x/asm/sigp.h @@ -49,13 +49,17 @@ static inline int sigp(uint16_t addr, uint8_t order, unsigned long parm, uint32_t *status) { register unsigned long reg1 asm ("1") = parm; + uint64_t spm_cc = SIGP_CC_NOT_OPERATIONAL << SPM_CC_SHIFT; int cc; asm volatile( + " spm %[spm_cc]\n" " sigp %1,%2,0(%3)\n" " ipm %0\n" " srl %0,28\n" - : "=d" (cc), "+d" (reg1) : "d" (addr), "a" (order) : "cc"); + : "=d" (cc), "+d" (reg1) + : "d" (addr), "a" (order), [spm_cc] "d" (spm_cc) + : "cc"); if (status) *status = reg1; return cc; -- 2.40.1