root/arch/sparc/lib/NG4copy_page.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /* NG4copy_page.S: Niagara-4 optimized copy page.
   3  *
   4  * Copyright (C) 2012 (davem@davemloft.net)
   5  */
   6 
   7 #include <asm/asi.h>
   8 #include <asm/page.h>
   9 
  10         .text
  11         .align          32
  12 
  13         .register       %g2, #scratch
  14         .register       %g3, #scratch
  15 
  16         .globl          NG4copy_user_page
  17 NG4copy_user_page:      /* %o0=dest, %o1=src, %o2=vaddr */
  18         prefetch        [%o1 + 0x000], #n_reads_strong
  19         prefetch        [%o1 + 0x040], #n_reads_strong
  20         prefetch        [%o1 + 0x080], #n_reads_strong
  21         prefetch        [%o1 + 0x0c0], #n_reads_strong
  22         set             PAGE_SIZE, %g7
  23         prefetch        [%o1 + 0x100], #n_reads_strong
  24         prefetch        [%o1 + 0x140], #n_reads_strong
  25         prefetch        [%o1 + 0x180], #n_reads_strong
  26         prefetch        [%o1 + 0x1c0], #n_reads_strong
  27 1:
  28         ldx             [%o1 + 0x00], %o2
  29         subcc           %g7, 0x40, %g7
  30         ldx             [%o1 + 0x08], %o3
  31         ldx             [%o1 + 0x10], %o4
  32         ldx             [%o1 + 0x18], %o5
  33         ldx             [%o1 + 0x20], %g1
  34         stxa            %o2, [%o0] ASI_ST_BLKINIT_MRU_P
  35         add             %o0, 0x08, %o0
  36         ldx             [%o1 + 0x28], %g2
  37         stxa            %o3, [%o0] ASI_ST_BLKINIT_MRU_P
  38         add             %o0, 0x08, %o0
  39         ldx             [%o1 + 0x30], %g3
  40         stxa            %o4, [%o0] ASI_ST_BLKINIT_MRU_P
  41         add             %o0, 0x08, %o0
  42         ldx             [%o1 + 0x38], %o2
  43         add             %o1, 0x40, %o1
  44         stxa            %o5, [%o0] ASI_ST_BLKINIT_MRU_P
  45         add             %o0, 0x08, %o0
  46         stxa            %g1, [%o0] ASI_ST_BLKINIT_MRU_P
  47         add             %o0, 0x08, %o0
  48         stxa            %g2, [%o0] ASI_ST_BLKINIT_MRU_P
  49         add             %o0, 0x08, %o0
  50         stxa            %g3, [%o0] ASI_ST_BLKINIT_MRU_P
  51         add             %o0, 0x08, %o0
  52         stxa            %o2, [%o0] ASI_ST_BLKINIT_MRU_P
  53         add             %o0, 0x08, %o0
  54         bne,pt          %icc, 1b
  55          prefetch       [%o1 + 0x200], #n_reads_strong
  56         retl
  57          membar         #StoreLoad | #StoreStore
  58         .size           NG4copy_user_page,.-NG4copy_user_page

/* [<][>][^][v][top][bottom][index][help] */