mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-08 14:23:19 +00:00
s390/sthyi: use register pair instead of register asm
Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
dda74578e7
commit
6a7b4e4ee1
@ -395,19 +395,18 @@ static void fill_diag(struct sthyi_sctns *sctns)
|
||||
|
||||
static int sthyi(u64 vaddr, u64 *rc)
|
||||
{
|
||||
register u64 code asm("0") = 0;
|
||||
register u64 addr asm("2") = vaddr;
|
||||
register u64 rcode asm("3");
|
||||
union register_pair r1 = { .even = 0, }; /* subcode */
|
||||
union register_pair r2 = { .even = vaddr, };
|
||||
int cc;
|
||||
|
||||
asm volatile(
|
||||
".insn rre,0xB2560000,%[code],%[addr]\n"
|
||||
".insn rre,0xB2560000,%[r1],%[r2]\n"
|
||||
"ipm %[cc]\n"
|
||||
"srl %[cc],28\n"
|
||||
: [cc] "=d" (cc), "=d" (rcode)
|
||||
: [code] "d" (code), [addr] "a" (addr)
|
||||
: [cc] "=&d" (cc), [r2] "+&d" (r2.pair)
|
||||
: [r1] "d" (r1.pair)
|
||||
: "memory", "cc");
|
||||
*rc = rcode;
|
||||
*rc = r2.odd;
|
||||
return cc;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user