csumpartialcopy.S 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * linux/arch/arm/lib/csumpartialcopy.S
  3. *
  4. * Copyright (C) 1995-1998 Russell King
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License version 2 as
  8. * published by the Free Software Foundation.
  9. */
  10. #include <linux/linkage.h>
  11. #include <asm/assembler.h>
  12. .text
  13. /* Function: __u32 csum_partial_copy_nocheck(const char *src, char *dst, int len, __u32 sum)
  14. * Params : r0 = src, r1 = dst, r2 = len, r3 = checksum
  15. * Returns : r0 = new checksum
  16. */
  17. .macro save_regs
  18. mov ip, sp
  19. stmfd sp!, {r1, r4 - r8, fp, ip, lr, pc}
  20. sub fp, ip, #4
  21. .endm
  22. .macro load_regs
  23. ldmfd sp, {r1, r4 - r8, fp, sp, pc}
  24. .endm
  25. .macro load1b, reg1
  26. ldrb \reg1, [r0], #1
  27. .endm
  28. .macro load2b, reg1, reg2
  29. ldrb \reg1, [r0], #1
  30. ldrb \reg2, [r0], #1
  31. .endm
  32. .macro load1l, reg1
  33. ldr \reg1, [r0], #4
  34. .endm
  35. .macro load2l, reg1, reg2
  36. ldr \reg1, [r0], #4
  37. ldr \reg2, [r0], #4
  38. .endm
  39. .macro load4l, reg1, reg2, reg3, reg4
  40. ldmia r0!, {\reg1, \reg2, \reg3, \reg4}
  41. .endm
  42. #define FN_ENTRY ENTRY(csum_partial_copy_nocheck)
  43. #include "csumpartialcopygeneric.S"