Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/sparc64/src/asm.S

    ra2da43c rb97b348  
    4242.global start
    4343.global halt
     44.global memcpy
    4445.global jump_to_kernel
    4546
     
    9798        ba %xcc, halt
    9899        nop
     100
     101memcpy:
     102        ! Save dst
     103       
     104        mov %o0, %o3
     105        add %o1, 7, %g1
     106        and %g1, -8, %g1
     107        cmp %o1, %g1
     108        be,pn %xcc, 3f
     109        add %o0, 7, %g1
     110        mov 0, %g3
     111       
     112        0:
     113                brz,pn %o2, 2f
     114                mov 0, %g2
     115       
     116        1:
     117                ldub [%g3 + %o1], %g1
     118                add %g2, 1, %g2
     119                cmp %o2, %g2
     120                stb %g1, [%g3 + %o0]
     121                bne,pt %xcc, 1b
     122                mov %g2, %g3
     123       
     124        2:
     125                ! Exit point
     126               
     127                jmp %o7 + 8
     128                mov %o3, %o0
     129       
     130        3:
     131                and %g1, -8, %g1
     132                cmp %o0, %g1
     133                bne,pt %xcc, 0b
     134                mov 0, %g3
     135                srlx %o2, 3, %g4
     136                brz,pn %g4, 5f
     137                mov 0, %g5
     138       
     139        4:
     140                sllx %g3, 3, %g2
     141                add %g5, 1, %g3
     142                ldx [%o1 + %g2], %g1
     143                mov %g3, %g5
     144                cmp %g4, %g3
     145                bne,pt %xcc, 4b
     146                stx %g1, [%o0 + %g2]
     147       
     148        5:
     149                and %o2, 7, %o2
     150                brz,pn %o2, 2b
     151                sllx %g4, 3, %g1
     152                mov 0, %g2
     153                add %g1, %o0, %o0
     154                add %g1, %o1, %g4
     155                mov 0, %g3
     156       
     157        6:
     158                ldub [%g2 + %g4], %g1
     159                stb %g1, [%g2 + %o0]
     160                add %g3, 1, %g2
     161                cmp %o2, %g2
     162                bne,pt %xcc, 6b
     163                mov %g2, %g3
     164       
     165        ! Exit point
     166       
     167        jmp %o7 + 8
     168        mov %o3, %o0
    99169
    100170jump_to_kernel:
Note: See TracChangeset for help on using the changeset viewer.