linux/arch/m32r/mm/page.S
<<
>>
Prefs
   1/*
   2 *  linux/arch/m32r/mm/page.S
   3 *
   4 *  Clear/Copy page with CPU
   5 *
   6 *  Copyright (C) 2004  The Free Software Initiative of Japan
   7 *
   8 *  Written by Niibe Yutaka
   9 *
  10 * This file is subject to the terms and conditions of the GNU General Public
  11 * License.  See the file "COPYING" in the main directory of this archive
  12 * for more details.
  13 *
  14 */
  15        .text
  16        .global copy_page
  17        /*
  18         * copy_page (to, from)
  19         *
  20         * PAGE_SIZE = 4096-byte
  21         * Cache line = 16-byte
  22         * 16 * 256
  23         */
  24        .align  4
  25copy_page:
  26        ldi     r2, #255
  27        ld      r3, @r0         /* cache line allocate */
  28        ld      r4, @r1+
  29        ld      r5, @r1+
  30        ld      r6, @r1+
  31        ld      r7, @r1+
  32        .fillinsn
  330:
  34        st      r4, @r0
  35        st      r5, @+r0
  36        st      r6, @+r0
  37        st      r7, @+r0
  38        ld      r4, @r1+
  39        addi    r0, #4
  40        ld      r5, @r1+
  41        ld      r6, @r1+
  42        ld      r7, @r1+
  43        ld      r3, @r0         /* cache line allocate */
  44        addi    r2, #-1
  45        bnez    r2, 0b
  46
  47        st      r4, @r0
  48        st      r5, @+r0
  49        st      r6, @+r0
  50        st      r7, @+r0
  51        jmp     r14
  52
  53        .text
  54        .global clear_page
  55        /*
  56         * clear_page (to)
  57         *
  58         * PAGE_SIZE = 4096-byte
  59         * Cache line = 16-byte
  60         * 16 * 256
  61         */
  62        .align  4
  63clear_page:
  64        ldi     r2, #255
  65        ldi     r4, #0
  66        ld      r3, @r0         /* cache line allocate */
  67        .fillinsn
  680:
  69        st      r4, @r0
  70        st      r4, @+r0
  71        st      r4, @+r0
  72        st      r4, @+r0
  73        addi    r0, #4
  74        ld      r3, @r0         /* cache line allocate */
  75        addi    r2, #-1
  76        bnez    r2, 0b
  77
  78        st      r4, @r0
  79        st      r4, @+r0
  80        st      r4, @+r0
  81        st      r4, @+r0
  82        jmp     r14
  83