]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/s390/char/zcore.c
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6-omap-h63xx.git] / drivers / s390 / char / zcore.c
index 66eb0688d523491b0749651f8f02ea7d4ef926ce..7073daf77981005e7edfe0c6f59c08b2a3251212 100644 (file)
@@ -141,22 +141,23 @@ static int memcpy_real(void *dest, unsigned long src, size_t count)
 
        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);
 
        return rc;
 }
 
-static int memcpy_real_user(__user void *dest, unsigned long src, size_t count)
+static int memcpy_real_user(void __user *dest, unsigned long src, size_t count)
 {
        static char buf[4096];
        int offs = 0, size;
@@ -267,7 +268,9 @@ struct zcore_header {
        u64 tod;
        cpuid_t cpu_id;
        u32 arch_id;
+       u32 volnr;
        u32 build_arch;
+       u64 rmem_size;
        char pad2[4016];
 } __attribute__((packed,__aligned__(16)));
 
@@ -559,6 +562,7 @@ static void __init zcore_header_init(int arch, struct zcore_header *hdr)
        else
                hdr->arch_id = DUMP_ARCH_S390;
        hdr->mem_size = sys_info.mem_size;
+       hdr->rmem_size = sys_info.mem_size;
        hdr->mem_end = sys_info.mem_size;
        hdr->num_pages = sys_info.mem_size / PAGE_SIZE;
        hdr->tod = get_clock();