From: Harald Freudenberger Date: Thu, 7 Jun 2018 05:19:48 +0000 (+0200) Subject: s390/zcrypt: Add ZAPQ inline function. X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=ea3c4185efb34e3157caf0529be8f1a68acc0550;p=linux.git s390/zcrypt: Add ZAPQ inline function. Added new inline function ap_pqap_zapq() which is a C inline function wrapper for the AP PQAP(ZAPQ) instruction. Signed-off-by: Harald Freudenberger Signed-off-by: Martin Schwidefsky --- diff --git a/drivers/s390/crypto/ap_asm.h b/drivers/s390/crypto/ap_asm.h index 16b59ce5e01d9..b22d30aaf810f 100644 --- a/drivers/s390/crypto/ap_asm.h +++ b/drivers/s390/crypto/ap_asm.h @@ -69,6 +69,25 @@ static inline struct ap_queue_status ap_rapq(ap_qid_t qid) return reg1; } +/** + * ap_pqap_zapq(): Reset and zeroize adjunct processor queue. + * @qid: The AP queue number + * + * Returns AP queue status structure. + */ +static inline struct ap_queue_status ap_zapq(ap_qid_t qid) +{ + register unsigned long reg0 asm ("0") = qid | (2UL << 24); + register struct ap_queue_status reg1 asm ("1"); + + asm volatile( + ".long 0xb2af0000" /* PQAP(ZAPQ) */ + : "=d" (reg1) + : "d" (reg0) + : "cc"); + return reg1; +} + /** * ap_aqic(): Control interruption for a specific AP. * @qid: The AP queue number