File s390-tools-sles15sp2-22-zipl-move-SIGP-related-functions-and-definitions-int.patch of Package s390-tools.18705
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)