Commit f9c9fe3e authored by Peter Oberparleiter's avatar Peter Oberparleiter Committed by Martin Schwidefsky

[S390] cio: inline assembly cleanup

Fix incorrect in- and output constraints, remove volatile declaration
of inline assembly parameters and reformat constraint declarations to
be more consistent.
Signed-off-by: default avatarPeter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 1f4e7eda
...@@ -901,7 +901,7 @@ static void cio_reset_pgm_check_handler(void) ...@@ -901,7 +901,7 @@ static void cio_reset_pgm_check_handler(void)
pgm_check_occured = 1; pgm_check_occured = 1;
} }
static int stsch_reset(struct subchannel_id schid, volatile struct schib *addr) static int stsch_reset(struct subchannel_id schid, struct schib *addr)
{ {
int rc; int rc;
......
...@@ -123,7 +123,7 @@ struct ccw_device_private { ...@@ -123,7 +123,7 @@ struct ccw_device_private {
void *cmb_wait; /* deferred cmb enable/disable */ void *cmb_wait; /* deferred cmb enable/disable */
}; };
static inline int ssch(struct subchannel_id schid, volatile union orb *addr) static inline int ssch(struct subchannel_id schid, union orb *addr)
{ {
register struct subchannel_id reg1 asm("1") = schid; register struct subchannel_id reg1 asm("1") = schid;
int ccode = -EIO; int ccode = -EIO;
...@@ -134,7 +134,9 @@ static inline int ssch(struct subchannel_id schid, volatile union orb *addr) ...@@ -134,7 +134,9 @@ static inline int ssch(struct subchannel_id schid, volatile union orb *addr)
" srl %0,28\n" " srl %0,28\n"
"1:\n" "1:\n"
EX_TABLE(0b, 1b) EX_TABLE(0b, 1b)
: "+d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc"); : "+d" (ccode)
: "d" (reg1), "a" (addr), "m" (*addr)
: "cc", "memory");
return ccode; return ccode;
} }
...@@ -147,7 +149,9 @@ static inline int rsch(struct subchannel_id schid) ...@@ -147,7 +149,9 @@ static inline int rsch(struct subchannel_id schid)
" rsch\n" " rsch\n"
" ipm %0\n" " ipm %0\n"
" srl %0,28" " srl %0,28"
: "=d" (ccode) : "d" (reg1) : "cc"); : "=d" (ccode)
: "d" (reg1)
: "cc", "memory");
return ccode; return ccode;
} }
...@@ -160,7 +164,9 @@ static inline int csch(struct subchannel_id schid) ...@@ -160,7 +164,9 @@ static inline int csch(struct subchannel_id schid)
" csch\n" " csch\n"
" ipm %0\n" " ipm %0\n"
" srl %0,28" " srl %0,28"
: "=d" (ccode) : "d" (reg1) : "cc"); : "=d" (ccode)
: "d" (reg1)
: "cc");
return ccode; return ccode;
} }
...@@ -173,7 +179,9 @@ static inline int hsch(struct subchannel_id schid) ...@@ -173,7 +179,9 @@ static inline int hsch(struct subchannel_id schid)
" hsch\n" " hsch\n"
" ipm %0\n" " ipm %0\n"
" srl %0,28" " srl %0,28"
: "=d" (ccode) : "d" (reg1) : "cc"); : "=d" (ccode)
: "d" (reg1)
: "cc");
return ccode; return ccode;
} }
...@@ -186,7 +194,9 @@ static inline int xsch(struct subchannel_id schid) ...@@ -186,7 +194,9 @@ static inline int xsch(struct subchannel_id schid)
" .insn rre,0xb2760000,%1,0\n" " .insn rre,0xb2760000,%1,0\n"
" ipm %0\n" " ipm %0\n"
" srl %0,28" " srl %0,28"
: "=d" (ccode) : "d" (reg1) : "cc"); : "=d" (ccode)
: "d" (reg1)
: "cc");
return ccode; return ccode;
} }
......
...@@ -23,38 +23,39 @@ struct tpi_info { ...@@ -23,38 +23,39 @@ struct tpi_info {
* Some S390 specific IO instructions as inline * Some S390 specific IO instructions as inline
*/ */
static inline int stsch(struct subchannel_id schid, static inline int stsch(struct subchannel_id schid, struct schib *addr)
volatile struct schib *addr)
{ {
register struct subchannel_id reg1 asm ("1") = schid; register struct subchannel_id reg1 asm ("1") = schid;
int ccode; int ccode;
asm volatile( asm volatile(
" stsch 0(%2)\n" " stsch 0(%3)\n"
" ipm %0\n" " ipm %0\n"
" srl %0,28" " srl %0,28"
: "=d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc"); : "=d" (ccode), "=m" (*addr)
: "d" (reg1), "a" (addr)
: "cc");
return ccode; return ccode;
} }
static inline int stsch_err(struct subchannel_id schid, static inline int stsch_err(struct subchannel_id schid, struct schib *addr)
volatile struct schib *addr)
{ {
register struct subchannel_id reg1 asm ("1") = schid; register struct subchannel_id reg1 asm ("1") = schid;
int ccode = -EIO; int ccode = -EIO;
asm volatile( asm volatile(
" stsch 0(%2)\n" " stsch 0(%3)\n"
"0: ipm %0\n" "0: ipm %0\n"
" srl %0,28\n" " srl %0,28\n"
"1:\n" "1:\n"
EX_TABLE(0b,1b) EX_TABLE(0b,1b)
: "+d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc"); : "+d" (ccode), "=m" (*addr)
: "d" (reg1), "a" (addr)
: "cc");
return ccode; return ccode;
} }
static inline int msch(struct subchannel_id schid, static inline int msch(struct subchannel_id schid, struct schib *addr)
volatile struct schib *addr)
{ {
register struct subchannel_id reg1 asm ("1") = schid; register struct subchannel_id reg1 asm ("1") = schid;
int ccode; int ccode;
...@@ -63,12 +64,13 @@ static inline int msch(struct subchannel_id schid, ...@@ -63,12 +64,13 @@ static inline int msch(struct subchannel_id schid,
" msch 0(%2)\n" " msch 0(%2)\n"
" ipm %0\n" " ipm %0\n"
" srl %0,28" " srl %0,28"
: "=d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc"); : "=d" (ccode)
: "d" (reg1), "a" (addr), "m" (*addr)
: "cc");
return ccode; return ccode;
} }
static inline int msch_err(struct subchannel_id schid, static inline int msch_err(struct subchannel_id schid, struct schib *addr)
volatile struct schib *addr)
{ {
register struct subchannel_id reg1 asm ("1") = schid; register struct subchannel_id reg1 asm ("1") = schid;
int ccode = -EIO; int ccode = -EIO;
...@@ -79,33 +81,38 @@ static inline int msch_err(struct subchannel_id schid, ...@@ -79,33 +81,38 @@ static inline int msch_err(struct subchannel_id schid,
" srl %0,28\n" " srl %0,28\n"
"1:\n" "1:\n"
EX_TABLE(0b,1b) EX_TABLE(0b,1b)
: "+d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc"); : "+d" (ccode)
: "d" (reg1), "a" (addr), "m" (*addr)
: "cc");
return ccode; return ccode;
} }
static inline int tsch(struct subchannel_id schid, static inline int tsch(struct subchannel_id schid, struct irb *addr)
volatile struct irb *addr)
{ {
register struct subchannel_id reg1 asm ("1") = schid; register struct subchannel_id reg1 asm ("1") = schid;
int ccode; int ccode;
asm volatile( asm volatile(
" tsch 0(%2)\n" " tsch 0(%3)\n"
" ipm %0\n" " ipm %0\n"
" srl %0,28" " srl %0,28"
: "=d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc"); : "=d" (ccode), "=m" (*addr)
: "d" (reg1), "a" (addr)
: "cc");
return ccode; return ccode;
} }
static inline int tpi( volatile struct tpi_info *addr) static inline int tpi(struct tpi_info *addr)
{ {
int ccode; int ccode;
asm volatile( asm volatile(
" tpi 0(%1)\n" " tpi 0(%2)\n"
" ipm %0\n" " ipm %0\n"
" srl %0,28" " srl %0,28"
: "=d" (ccode) : "a" (addr), "m" (*addr) : "cc"); : "=d" (ccode), "=m" (*addr)
: "a" (addr)
: "cc");
return ccode; return ccode;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment