Changeset 3dcb108 in mainline for arch/mips32/src/asm.S


Ignore:
Timestamp:
2006-06-06T16:19:37Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
afc12d0
Parents:
ae3f1709
Message:

mips32 version of alignment-safe memcpy.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/mips32/src/asm.S

    rae3f1709 r3dcb108  
    6767memcpy_from_uspace:
    6868memcpy_to_uspace:
    69         srl     $t1,$a2,0x2
    70         beqz    $t1,1f
    71         move    $t0,$zero
    72         move    $a3,$zero
    73 2:     
    74         addu    $v0,$a1,$a3
    75         lw      $v1,0($v0)
    76         addiu   $t0,$t0,1
    77         addu    $v0,$a0,$a3
    78         sw      $v1,0($v0)
    79         bne     $t0,$t1,2b
    80         addiu   $a3,$a3,4
    81 1:     
    82         andi    $a2,$a2,0x3
    83         beqz    $a2,3f
    84         move    $a3,$zero
    85         sll     $v0,$t0,0x2
    86         addu    $t1,$a0,$v0
    87         addu    $t0,$v0,$a1
    88 4:     
    89         addu    $v0,$t0,$a3
    90         lbu     $a0,0($v0)
    91         addu    $v1,$t1,$a3
    92         addiu   $a3,$a3,1
    93         bne     $a3,$a2,4b
    94         sb      $a0,0($v1)
    95 3:     
    96         jr      $ra
    97         move    $v0,$a1
     69        addiu   $v0,$a1,3
     70        li      $v1,-4                  # 0xfffffffffffffffc
     71        and     $v0,$v0,$v1
     72        beq     $a1,$v0,3f
     73        move    $t0,$a0
     74
     750:
     76        beq     $a2,$zero,2f
     77        move    $a3,$zero
     78
     791:
     80        addu    $v0,$a1,$a3
     81        lbu     $a0,0($v0)
     82        addu    $v1,$t0,$a3
     83        addiu   $a3,$a3,1
     84        bne     $a3,$a2,1b
     85        sb      $a0,0($v1)
     86
     872:
     88        jr      $ra
     89        move    $v0,$a1
     90
     913:
     92        addiu   $v0,$a0,3
     93        and     $v0,$v0,$v1
     94        bne     $a0,$v0,0b
     95        srl     $t1,$a2,2
     96
     97        beq     $t1,$zero,5f
     98        move    $a3,$zero
     99
     100        move    $a3,$zero
     101        move    $a0,$zero
     1024:
     103        addu    $v0,$a1,$a0
     104        lw      $v1,0($v0)
     105        addiu   $a3,$a3,1
     106        addu    $v0,$t0,$a0
     107        sw      $v1,0($v0)
     108        bne     $a3,$t1,4b
     109        addiu   $a0,$a0,4
     110
     1115:
     112        andi    $a2,$a2,0x3
     113        beq     $a2,$zero,2b
     114        nop
     115
     116        sll     $v0,$a3,2
     117        addu    $t1,$v0,$t0
     118        move    $a3,$zero
     119        addu    $t0,$v0,$a1
     1206:
     121        addu    $v0,$t0,$a3
     122        lbu     $a0,0($v0)
     123        addu    $v1,$t1,$a3
     124        addiu   $a3,$a3,1
     125        bne     $a3,$a2,6b
     126        sb      $a0,0($v1)
     127
     128        jr      $ra
     129        move    $v0,$a1
    98130
    99131memcpy_from_uspace_failover_address:
Note: See TracChangeset for help on using the changeset viewer.