[kvm-unit-tests PATCH v2 1/5] lib: s390x: sigp: Dirty CC before sigp execution

Janosch Frank
2024-01-31T07:44:57Z

Dirtying the CC allows us to find missing CC changes when sigp is
emulated.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
---
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..4eae95d0 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 bogus_cc = SIGP_CC_NOT_OPERATIONAL;
int cc;

asm volatile(
+ " tmll %[bogus_cc],3\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), [bogus_cc] "d" (bogus_cc)
+ : "cc");
if (status)
*status = reg1;
return cc;
--
2.40.1