csumpartialcopy.S 979 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * linux/arch/arm/lib/csumpartialcopy.S
  4. *
  5. * Copyright (C) 1995-1998 Russell King
  6. */
  7. #include <linux/linkage.h>
  8. #include <asm/assembler.h>
  9. .text
  10. /* Function: __u32 csum_partial_copy_nocheck(const char *src, char *dst, int len)
  11. * Params : r0 = src, r1 = dst, r2 = len
  12. * Returns : r0 = new checksum
  13. */
  14. .macro save_regs
  15. stmfd sp!, {r1, r4 - r8, lr}
  16. .endm
  17. .macro load_regs
  18. ldmfd sp!, {r1, r4 - r8, pc}
  19. .endm
  20. .macro load1b, reg1
  21. ldrb \reg1, [r0], #1
  22. .endm
  23. .macro load2b, reg1, reg2
  24. ldrb \reg1, [r0], #1
  25. ldrb \reg2, [r0], #1
  26. .endm
  27. .macro load1l, reg1
  28. ldr \reg1, [r0], #4
  29. .endm
  30. .macro load2l, reg1, reg2
  31. ldr \reg1, [r0], #4
  32. ldr \reg2, [r0], #4
  33. .endm
  34. .macro load4l, reg1, reg2, reg3, reg4
  35. ldmia r0!, {\reg1, \reg2, \reg3, \reg4}
  36. .endm
  37. #define FN_ENTRY ENTRY(csum_partial_copy_nocheck)
  38. #define FN_EXIT ENDPROC(csum_partial_copy_nocheck)
  39. #include "csumpartialcopygeneric.S"