File s390-tools-sles15sp2-22-zipl-move-SIGP-related-functions-and-definitions-int.patch of Package s390-tools.19608

Subject: [PATCH] [FEAT VS1804] zipl: move SIGP related functions and definitions into separate header
From: Marc Hartmayer <mhartmay@linux.ibm.com>

Summary:     genprotimg: Introduce new tool for the creation of PV images
Description: genprotimg takes a kernel, host-key documents, optionally an
             initrd, optionally a file with the kernel command line, and it
             generates a single, loadable image file. The image consists of a
             concatenation of a plain text boot loader, the encrypted
             components for kernel, initrd, and cmdline, and the
             integrity-protected PV header, containing metadata necessary for
             running the guest in PV mode. It's possible to use this image file
             as a kernel for zIPL or for a direct kernel boot using QEMU.
Upstream-ID: 675c854fa3239882c59a9419c776eb13bc70cf76
Problem-ID:  VS1804

Upstream-Description:

             zipl: move SIGP related functions and definitions into separate header

             Move SIGP related functions and definitions to
             `include/boot/sigp.h`. This allows the reuse of the definitions in
             assembler files.

             Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
             Acked-by: Janosch Frank <frankja@linux.ibm.com>
             Reviewed-by: Philipp Rudo <prudo@linux.ibm.com>
             Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
             Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>


Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
---
 include/boot/sigp.h |   55 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 zipl/boot/s390.h    |   38 -----------------------------------
 2 files changed, 56 insertions(+), 37 deletions(-)

--- /dev/null
+++ b/include/boot/sigp.h
@@ -0,0 +1,55 @@
+/*
+ * SIGP related definitions and functions.
+ *
+ * Copyright IBM Corp. 2020
+ *
+ * s390-tools is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See LICENSE for details.
+ */
+
+#ifndef S390_SIGP_H
+#define S390_SIGP_H
+
+/* Signal Processor Order Codes */
+#define SIGP_STOP_AND_STORE_STATUS	9
+#define SIGP_SET_MULTI_THREADING	22
+#define SIGP_STORE_ASTATUS_AT_ADDRESS	23
+
+/* Signal Processor Condition Codes */
+#define SIGP_CC_ORDER_CODE_ACCEPTED	0
+#define SIGP_CC_BUSY			2
+
+
+#ifndef __ASSEMBLER__
+
+#include <stdint.h>
+
+static inline int sigp(uint16_t addr, uint8_t order, uint32_t parm,
+		       uint32_t *status)
+{
+	register unsigned int reg1 asm ("1") = parm;
+	int cc;
+
+	asm volatile(
+		"	sigp	%1,%2,0(%3)\n"
+		"	ipm	%0\n"
+		"	srl	%0,28\n"
+		: "=d" (cc), "+d" (reg1) : "d" (addr), "a" (order) : "cc");
+	if (status && cc == 1)
+		*status = reg1;
+	return cc;
+}
+
+static inline int sigp_busy(uint16_t addr, uint8_t order, uint32_t parm,
+			    uint32_t *status)
+{
+	int cc;
+
+	do {
+		cc = sigp(addr, order, parm, status);
+	} while (cc == SIGP_CC_BUSY);
+	return cc;
+}
+
+#endif /* __ASSEMBLER__ */
+#endif /* S390_SIGP_H */
--- a/zipl/boot/s390.h
+++ b/zipl/boot/s390.h
@@ -13,6 +13,7 @@
 
 #include "lib/zt_common.h"
 #include "libc.h"
+#include "boot/sigp.h"
 
 #define __pa32(x) ((uint32_t)(unsigned long)(x))
 #define __pa(x) ((unsigned long)(x))
@@ -295,43 +296,6 @@ static inline int diag308(unsigned long
 }
 
 /*
- * Signal Processor
- */
-#define SIGP_STOP_AND_STORE_STATUS	9
-#define SIGP_SET_MULTI_THREADING	22
-#define SIGP_STORE_ASTATUS_AT_ADDRESS	23
-
-#define SIGP_CC_ORDER_CODE_ACCEPTED	0
-#define SIGP_CC_BUSY			2
-
-static inline int sigp(uint16_t addr, uint8_t order, uint32_t parm,
-		       uint32_t *status)
-{
-	register unsigned int reg1 asm ("1") = parm;
-	int cc;
-
-	asm volatile(
-		"	sigp	%1,%2,0(%3)\n"
-		"	ipm	%0\n"
-		"	srl	%0,28\n"
-		: "=d" (cc), "+d" (reg1) : "d" (addr), "a" (order) : "cc");
-	if (status && cc == 1)
-		*status = reg1;
-	return cc;
-}
-
-static inline int sigp_busy(uint16_t addr, uint8_t order, uint32_t parm,
-			    uint32_t *status)
-{
-	int cc;
-
-	do {
-		cc = sigp(addr, order, parm, status);
-	} while (cc == SIGP_CC_BUSY);
-	return cc;
-}
-
-/*
  * Store CPU address
  */
 static inline unsigned short stap(void)
openSUSE Build Service is sponsored by