lkml.org 
[lkml]   [2007]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 30/34] zcore: fix inline assembly in memcpy_real()
    From: Michael Holzheu <holzheu@de.ibm.com>

    memcpy_real uses the mvcle instruction. This instruction alters all used
    registers (source, destination and 2 x count). Therefore we have to flag
    those registers as input/output registers (+d). In addition to that, we
    have to specify, that we read from memory designated by "src" and write to
    memory designated by "dest".

    Signed-off-by: Michael Holzheu <holzheu@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    ---

    drivers/s390/char/zcore.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    Index: quilt-2.6/drivers/s390/char/zcore.c
    ===================================================================
    --- quilt-2.6.orig/drivers/s390/char/zcore.c
    +++ quilt-2.6/drivers/s390/char/zcore.c
    @@ -141,15 +141,16 @@ static int memcpy_real(void *dest, unsig

    if (count == 0)
    return 0;
    - flags = __raw_local_irq_stnsm(0xf8); /* switch to real mode */
    + flags = __raw_local_irq_stnsm(0xf8UL); /* switch to real mode */
    asm volatile (
    "0: mvcle %1,%2,0x0\n"
    "1: jo 0b\n"
    " lhi %0,0x0\n"
    "2:\n"
    EX_TABLE(1b,2b)
    - : "+d" (rc)
    - : "d" (_dest), "d" (_src), "d" (_len1), "d" (_len2)
    + : "+d" (rc), "+d" (_dest), "+d" (_src), "+d" (_len1),
    + "+d" (_len2), "=m" (*((long*)dest))
    + : "m" (*((long*)src))
    : "cc", "memory");
    __raw_local_irq_ssm(flags);

    --
    blue skies,
    Martin.

    "Reality continues to ruin my life." - Calvin.

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-10-04 13:39    [W:5.935 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site