From: Heiko Carstens Date: Mon, 24 Feb 2025 14:59:11 +0000 (+0100) Subject: s390/boot: Convert __diag308() to extable X-Git-Tag: v6.15-rc1~113^2~24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9ef496ddf95e0410bf3003cf2415485879e536f4;p=thirdparty%2Flinux.git s390/boot: Convert __diag308() to extable Shorten __diag308() and use regular EX_TABLE program check handling. Acked-by: Alexander Gordeev Signed-off-by: Heiko Carstens Signed-off-by: Vasily Gorbik --- diff --git a/arch/s390/boot/ipl_parm.c b/arch/s390/boot/ipl_parm.c index 86cfb16dd63da..b49c906b57dc0 100644 --- a/arch/s390/boot/ipl_parm.c +++ b/arch/s390/boot/ipl_parm.c @@ -35,29 +35,14 @@ int vmalloc_size_set; static inline int __diag308(unsigned long subcode, void *addr) { - unsigned long reg1, reg2; - union register_pair r1; - psw_t old; + union register_pair r1 = { .even = (unsigned long)addr, .odd = 0 }; - r1.even = (unsigned long) addr; - r1.odd = 0; asm volatile( - " mvc 0(16,%[psw_old]),0(%[psw_pgm])\n" - " epsw %[reg1],%[reg2]\n" - " st %[reg1],0(%[psw_pgm])\n" - " st %[reg2],4(%[psw_pgm])\n" - " larl %[reg1],1f\n" - " stg %[reg1],8(%[psw_pgm])\n" " diag %[r1],%[subcode],0x308\n" - "1: mvc 0(16,%[psw_pgm]),0(%[psw_old])\n" - : [r1] "+&d" (r1.pair), - [reg1] "=&d" (reg1), - [reg2] "=&a" (reg2), - "+Q" (get_lowcore()->program_new_psw), - "=Q" (old) - : [subcode] "d" (subcode), - [psw_old] "a" (&old), - [psw_pgm] "a" (&get_lowcore()->program_new_psw) + "0:\n" + EX_TABLE(0b, 0b) + : [r1] "+d" (r1.pair) + : [subcode] "d" (subcode) : "cc", "memory"); return r1.odd; }