From 1427030d9a4a1ce6009ae3e677159d18182a2863 Mon Sep 17 00:00:00 2001 From: Michael Holzheu Date: Thu, 28 Dec 2006 00:35:36 +0100 Subject: [PATCH] --- yaml --- r: 45096 b: refs/heads/master c: aa77015c4e94cb1d30680646c163d7ae1f93f941 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/s390/cio/cio.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 498c53f36564..8e0343b8ee05 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 524a237e4512038d6e07ad3b2e44e70902b76738 +refs/heads/master: aa77015c4e94cb1d30680646c163d7ae1f93f941 diff --git a/trunk/drivers/s390/cio/cio.c b/trunk/drivers/s390/cio/cio.c index 3a403f195cf8..b471ac4a1bf6 100644 --- a/trunk/drivers/s390/cio/cio.c +++ b/trunk/drivers/s390/cio/cio.c @@ -2,8 +2,7 @@ * drivers/s390/cio/cio.c * S/390 common I/O routines -- low level i/o calls * - * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, - * IBM Corporation + * Copyright (C) IBM Corp. 1999,2006 * Author(s): Ingo Adlung (adlung@de.ibm.com) * Cornelia Huck (cornelia.huck@de.ibm.com) * Arnd Bergmann (arndb@de.ibm.com) @@ -881,10 +880,18 @@ static void cio_reset_pgm_check_handler(void) static int stsch_reset(struct subchannel_id schid, volatile struct schib *addr) { int rc; + register struct subchannel_id reg1 asm ("1") = schid; pgm_check_occured = 0; s390_reset_pgm_handler = cio_reset_pgm_check_handler; - rc = stsch(schid, addr); + + asm volatile( + " stsch 0(%2)\n" + " ipm %0\n" + " srl %0,28" + : "=d" (rc) + : "d" (reg1), "a" (addr), "m" (*addr) : "memory", "cc"); + s390_reset_pgm_handler = NULL; if (pgm_check_occured) return -EIO;