Skip to content

Commit 4c89eb8

Browse files
committed
s390/pfault: cleanup inline assemblies
Cleanup the pfault inline assemblies: - Use symbolic names for operands - Add extra linebreaks, and whitespace to improve readability In addition, change __pfault_init() to return -EOPNOTSUPP in case of an exception, and don't return a made up valid diag 258 return value (aka "8"). This allows to simplify the inline assembly, and makes debugging easier, in case something is broken. Reviewed-by: Sven Schnelle <svens@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
1 parent 28254f3 commit 4c89eb8

2 files changed

Lines changed: 17 additions & 15 deletions

File tree

arch/s390/include/asm/pfault.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@
55
#ifndef _ASM_S390_PFAULT_H
66
#define _ASM_S390_PFAULT_H
77

8+
#include <linux/errno.h>
9+
810
int __pfault_init(void);
911
void __pfault_fini(void);
1012

1113
static inline int pfault_init(void)
1214
{
1315
if (IS_ENABLED(CONFIG_PFAULT))
1416
return __pfault_init();
15-
return -1;
17+
return -EOPNOTSUPP;
1618
}
1719

1820
static inline void pfault_fini(void)

arch/s390/mm/pfault.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,19 @@ static struct pfault_refbk pfault_init_refbk = {
5151

5252
int __pfault_init(void)
5353
{
54-
int rc;
54+
int rc = -EOPNOTSUPP;
5555

5656
if (pfault_disable)
57-
return -1;
57+
return rc;
5858
diag_stat_inc(DIAG_STAT_X258);
5959
asm volatile(
60-
" diag %1,%0,0x258\n"
61-
"0: j 2f\n"
62-
"1: la %0,8\n"
63-
"2:\n"
64-
EX_TABLE(0b,1b)
65-
: "=d" (rc)
66-
: "a" (&pfault_init_refbk), "m" (pfault_init_refbk) : "cc");
67-
return rc;
60+
" diag %[refbk],%[rc],0x258\n"
61+
"0: nopr %%r7\n"
62+
EX_TABLE(0b, 0b)
63+
: [rc] "+d" (rc)
64+
: [refbk] "a" (&pfault_init_refbk), "m" (pfault_init_refbk)
65+
: "cc");
66+
return rc;
6867
}
6968

7069
static struct pfault_refbk pfault_fini_refbk = {
@@ -76,15 +75,16 @@ static struct pfault_refbk pfault_fini_refbk = {
7675

7776
void __pfault_fini(void)
7877
{
79-
8078
if (pfault_disable)
8179
return;
8280
diag_stat_inc(DIAG_STAT_X258);
8381
asm volatile(
84-
" diag %0,0,0x258\n"
82+
" diag %[refbk],0,0x258\n"
8583
"0: nopr %%r7\n"
86-
EX_TABLE(0b,0b)
87-
: : "a" (&pfault_fini_refbk), "m" (pfault_fini_refbk) : "cc");
84+
EX_TABLE(0b, 0b)
85+
:
86+
: [refbk] "a" (&pfault_fini_refbk), "m" (pfault_fini_refbk)
87+
: "cc");
8888
}
8989

9090
static DEFINE_SPINLOCK(pfault_lock);

0 commit comments

Comments
 (0)