|
@@ -23,38 +23,39 @@ struct tpi_info {
|
|
|
* Some S390 specific IO instructions as inline
|
|
|
*/
|
|
|
|
|
|
-static inline int stsch(struct subchannel_id schid,
|
|
|
- volatile struct schib *addr)
|
|
|
+static inline int stsch(struct subchannel_id schid, struct schib *addr)
|
|
|
{
|
|
|
register struct subchannel_id reg1 asm ("1") = schid;
|
|
|
int ccode;
|
|
|
|
|
|
asm volatile(
|
|
|
- " stsch 0(%2)\n"
|
|
|
+ " stsch 0(%3)\n"
|
|
|
" ipm %0\n"
|
|
|
" srl %0,28"
|
|
|
- : "=d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc");
|
|
|
+ : "=d" (ccode), "=m" (*addr)
|
|
|
+ : "d" (reg1), "a" (addr)
|
|
|
+ : "cc");
|
|
|
return ccode;
|
|
|
}
|
|
|
|
|
|
-static inline int stsch_err(struct subchannel_id schid,
|
|
|
- volatile struct schib *addr)
|
|
|
+static inline int stsch_err(struct subchannel_id schid, struct schib *addr)
|
|
|
{
|
|
|
register struct subchannel_id reg1 asm ("1") = schid;
|
|
|
int ccode = -EIO;
|
|
|
|
|
|
asm volatile(
|
|
|
- " stsch 0(%2)\n"
|
|
|
+ " stsch 0(%3)\n"
|
|
|
"0: ipm %0\n"
|
|
|
" srl %0,28\n"
|
|
|
"1:\n"
|
|
|
EX_TABLE(0b,1b)
|
|
|
- : "+d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc");
|
|
|
+ : "+d" (ccode), "=m" (*addr)
|
|
|
+ : "d" (reg1), "a" (addr)
|
|
|
+ : "cc");
|
|
|
return ccode;
|
|
|
}
|
|
|
|
|
|
-static inline int msch(struct subchannel_id schid,
|
|
|
- volatile struct schib *addr)
|
|
|
+static inline int msch(struct subchannel_id schid, struct schib *addr)
|
|
|
{
|
|
|
register struct subchannel_id reg1 asm ("1") = schid;
|
|
|
int ccode;
|
|
@@ -63,12 +64,13 @@ static inline int msch(struct subchannel_id schid,
|
|
|
" msch 0(%2)\n"
|
|
|
" ipm %0\n"
|
|
|
" srl %0,28"
|
|
|
- : "=d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc");
|
|
|
+ : "=d" (ccode)
|
|
|
+ : "d" (reg1), "a" (addr), "m" (*addr)
|
|
|
+ : "cc");
|
|
|
return ccode;
|
|
|
}
|
|
|
|
|
|
-static inline int msch_err(struct subchannel_id schid,
|
|
|
- volatile struct schib *addr)
|
|
|
+static inline int msch_err(struct subchannel_id schid, struct schib *addr)
|
|
|
{
|
|
|
register struct subchannel_id reg1 asm ("1") = schid;
|
|
|
int ccode = -EIO;
|
|
@@ -79,33 +81,38 @@ static inline int msch_err(struct subchannel_id schid,
|
|
|
" srl %0,28\n"
|
|
|
"1:\n"
|
|
|
EX_TABLE(0b,1b)
|
|
|
- : "+d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc");
|
|
|
+ : "+d" (ccode)
|
|
|
+ : "d" (reg1), "a" (addr), "m" (*addr)
|
|
|
+ : "cc");
|
|
|
return ccode;
|
|
|
}
|
|
|
|
|
|
-static inline int tsch(struct subchannel_id schid,
|
|
|
- volatile struct irb *addr)
|
|
|
+static inline int tsch(struct subchannel_id schid, struct irb *addr)
|
|
|
{
|
|
|
register struct subchannel_id reg1 asm ("1") = schid;
|
|
|
int ccode;
|
|
|
|
|
|
asm volatile(
|
|
|
- " tsch 0(%2)\n"
|
|
|
+ " tsch 0(%3)\n"
|
|
|
" ipm %0\n"
|
|
|
" srl %0,28"
|
|
|
- : "=d" (ccode) : "d" (reg1), "a" (addr), "m" (*addr) : "cc");
|
|
|
+ : "=d" (ccode), "=m" (*addr)
|
|
|
+ : "d" (reg1), "a" (addr)
|
|
|
+ : "cc");
|
|
|
return ccode;
|
|
|
}
|
|
|
|
|
|
-static inline int tpi( volatile struct tpi_info *addr)
|
|
|
+static inline int tpi(struct tpi_info *addr)
|
|
|
{
|
|
|
int ccode;
|
|
|
|
|
|
asm volatile(
|
|
|
- " tpi 0(%1)\n"
|
|
|
+ " tpi 0(%2)\n"
|
|
|
" ipm %0\n"
|
|
|
" srl %0,28"
|
|
|
- : "=d" (ccode) : "a" (addr), "m" (*addr) : "cc");
|
|
|
+ : "=d" (ccode), "=m" (*addr)
|
|
|
+ : "a" (addr)
|
|
|
+ : "cc");
|
|
|
return ccode;
|
|
|
}
|
|
|
|