From 0e385a81caf7c266c0784613e0264c03271eb99a Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Mon, 18 Nov 2019 12:43:57 +0100 Subject: [PATCH] zipl: add SIGP_SET_ARCHITECTURE to sigp.h and use it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes the code easier to read. Reviewed-by: Philipp Rudo Reviewed-by: Stefan Haberland Signed-off-by: Marc Hartmayer Signed-off-by: Jan Höppner --- include/boot/sigp.h | 1 + zipl/boot/head.S | 6 ++++-- zipl/boot/stage3.c | 6 ++++-- zipl/boot/tape0.S | 6 ++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/boot/sigp.h b/include/boot/sigp.h index c3e7d482..1606580d 100644 --- a/include/boot/sigp.h +++ b/include/boot/sigp.h @@ -12,6 +12,7 @@ /* Signal Processor Order Codes */ #define SIGP_STOP_AND_STORE_STATUS 9 +#define SIGP_SET_ARCHITECTURE 18 #define SIGP_SET_MULTI_THREADING 22 #define SIGP_STORE_ASTATUS_AT_ADDRESS 23 diff --git a/zipl/boot/head.S b/zipl/boot/head.S index cc68b8a3..f2395f6d 100644 --- a/zipl/boot/head.S +++ b/zipl/boot/head.S @@ -9,16 +9,18 @@ * it under the terms of the MIT license. See LICENSE for details. */ +#include "boot/sigp.h" + .section .text.start .globl _start _start: basr %r13,0 0: la %r7,2 /* First try code 2: */ la %r6,0 /* 64 bit psws are restored */ - sigp %r7,%r6,0x12 /* Switch to 64 bit */ + sigp %r7,%r6,SIGP_SET_ARCHITECTURE /* Switch to 64 bit */ bc 8,.Lswitched_64-0b(%r13) /* Accepted ? */ la %r7,1 /* Failed - try code 1 */ - sigp %r7,%r6,0x12 /* Switch to 64 bit */ + sigp %r7,%r6,SIGP_SET_ARCHITECTURE /* Switch to 64 bit */ .Lswitched_64: sam64 /* Switch to 64 bit addr mode */ basr %r13,0 diff --git a/zipl/boot/stage3.c b/zipl/boot/stage3.c index 82f20035..8719155a 100644 --- a/zipl/boot/stage3.c +++ b/zipl/boot/stage3.c @@ -10,6 +10,7 @@ */ #include "libc.h" +#include "boot/sigp.h" #include "s390.h" #include "stage3.h" #include "error.h" @@ -194,11 +195,12 @@ static inline void __noreturn start_kernel(void) " sam31\n" " sr %r1,%r1\n" " sr %r2,%r2\n" - " sigp %r1,%r2,0x12\n" + " sigp %r1,%r2,%[order]\n" " lpsw 0\n" : [addr] "=&d" (addr), [code] "+&d" (code) - : [psw] "a" (psw) ); + : [psw] "a" (psw), + [order] "L" (SIGP_SET_ARCHITECTURE)); while (1); } diff --git a/zipl/boot/tape0.S b/zipl/boot/tape0.S index 2b1e3f49..e2a659d2 100644 --- a/zipl/boot/tape0.S +++ b/zipl/boot/tape0.S @@ -7,6 +7,8 @@ # it under the terms of the MIT license. See LICENSE for details. # +#include "boot/sigp.h" + IPL_BS = 1024 # block size for tape access IPL_OFF = 0x4000 # temporary kernel load addr COMMAND_LINE_SIZE = 896 # max command line length @@ -184,10 +186,10 @@ iplstart: 0: la %r7,2 #/* First try code 2: */ la %r6,0 #/* 64 bit psws are restored */ - sigp %r7,%r6,0x12 #/* Switch to 64 bit */ + sigp %r7,%r6,SIGP_SET_ARCHITECTURE #/* Switch to 64 bit */ bc 8,.Lswitched_64-0b(%r13) #/* Accepted ? */ la %r7,1 #/* Failed - try code 1 */ - sigp %r7,%r6,0x12 #/* Switch to 64 bit */ + sigp %r7,%r6,SIGP_SET_ARCHITECTURE #/* Switch to 64 bit */ .Lswitched_64: sam64 #/* Switch to 64 bit addr mode */ basr %r13,0