[S390] Use csum_partial in checksum.h
authorFrank Munzert <munzert@de.ibm.com>
Thu, 26 Mar 2009 14:24:45 +0000 (15:24 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 26 Mar 2009 14:24:27 +0000 (15:24 +0100)
The cksm function in system.h is duplicate to csum_partial in checksum.h.
Remove cksm and use csum_partial instead.

Signed-off-by: Frank Munzert <munzert@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/system.h
arch/s390/kernel/ipl.c
drivers/s390/char/zcore.c

index 3f2ccb82b863b87ff89553df8b0448776e1e5ff3..3a8b26eb1f2e827d3d6de72b508dd307c08de6a0 100644 (file)
@@ -458,22 +458,6 @@ static inline unsigned short stap(void)
        return cpu_address;
 }
 
-static inline u32 cksm(void *addr, unsigned long len)
-{
-       register unsigned long _addr asm("0") = (unsigned long) addr;
-       register unsigned long _len asm("1") = len;
-       unsigned long accu = 0;
-
-       asm volatile(
-               "0:\n"
-               "       cksm    %0,%1\n"
-               "       jnz     0b\n"
-               : "+d" (accu), "+d" (_addr), "+d" (_len)
-               :
-               : "cc", "memory");
-       return accu;
-}
-
 extern void (*_machine_restart)(char *command);
 extern void (*_machine_halt)(void);
 extern void (*_machine_power_off)(void);
index 5663c1f8e46a390e4f836b3cbba428facdd0d761..505fec06e634a61b5cb81ad9a5f88bacc420d826 100644 (file)
@@ -24,6 +24,7 @@
 #include <asm/reset.h>
 #include <asm/sclp.h>
 #include <asm/setup.h>
+#include <asm/checksum.h>
 
 #define IPL_PARM_BLOCK_VERSION 0
 
@@ -1359,7 +1360,8 @@ static void dump_reipl_run(struct shutdown_trigger *trigger)
                "a" (&lowcore_ptr[smp_processor_id()]->ipib));
 #endif
        asm volatile("stura %0,%1"
-               :: "a" (cksm(reipl_block_actual, reipl_block_actual->hdr.len)),
+               :: "a" (csum_partial(reipl_block_actual,
+                                    reipl_block_actual->hdr.len, 0)),
                "a" (&lowcore_ptr[smp_processor_id()]->ipib_checksum));
        preempt_enable();
        dump_run(trigger);
index cfe782ee6473c6f171cfb3b1826dd8df1d46a292..1bbae433fbd85bd20856f0882324d5da037c6d1f 100644 (file)
@@ -24,6 +24,7 @@
 #include <asm/debug.h>
 #include <asm/processor.h>
 #include <asm/irqflags.h>
+#include <asm/checksum.h>
 #include "sclp.h"
 
 #define TRACE(x...) debug_sprintf_event(zcore_dbf, 1, x)
@@ -704,7 +705,8 @@ static int __init zcore_reipl_init(void)
                free_page((unsigned long) ipl_block);
                return rc;
        }
-       if (cksm(ipl_block, ipl_block->hdr.len) != ipib_info.checksum) {
+       if (csum_partial(ipl_block, ipl_block->hdr.len, 0) !=
+           ipib_info.checksum) {
                TRACE("Checksum does not match\n");
                free_page((unsigned long) ipl_block);
                ipl_block = NULL;