Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.4:ARM
s390-tools.16701
s390-tools-sles15sp2-22-zipl-move-SIGP-related-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File s390-tools-sles15sp2-22-zipl-move-SIGP-related-functions-and-definitions-int.patch of Package s390-tools.16701
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)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor