Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset a2da43c in mainline


Ignore:
Timestamp:
2010-07-24T20:03:35Z (12 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial
Children:
af96dd5, c621f4aa
Parents:
46757a6
Message:

memcpy assembly blobs in boot stage are not needed. Replace them all with a simple C function.

Location:
boot
Files:
1 added
10 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/arm32/Makefile.inc

    r46757a6 ra2da43c  
    5353        $(COMPS_C) \
    5454        genarch/src/division.c \
     55        generic/src/memstr.c \
    5556        generic/src/printf_core.c \
    5657        generic/src/vprintf.c \
  • boot/arch/arm32/src/asm.S

    r46757a6 ra2da43c  
    3535.global boot_stack
    3636.global halt
    37 .global memcpy
    3837.global jump_to_kernel
    3938
     
    5554        b halt
    5655
    57 memcpy:
    58         add r3, r1, #3
    59         bic r3, r3, #3
    60         cmp r1, r3
    61         stmdb sp!, {r4, r5, lr}
    62         mov r5, r0
    63         beq 4f
    64        
    65         1:
    66                 cmp r2, #0
    67                 movne ip, #0
    68                 beq 3f
    69        
    70         2:
    71                 ldrb r3, [ip, r1]
    72                 strb r3, [ip, r0]
    73                 add ip, ip, #1
    74                 cmp ip, r2
    75                 bne 2b
    76        
    77         3:
    78                 mov r0, r5
    79                 ldmia sp!, {r4, r5, pc}
    80        
    81         4:
    82                 add r3, r0, #3
    83                 bic r3, r3, #3
    84                 cmp r0, r3
    85                 bne 1b
    86                 movs r4, r2, lsr #2
    87                 moveq lr, r4
    88                 beq 6f
    89                 mov lr, #0
    90                 mov ip, lr
    91        
    92         5:
    93                 ldr r3, [ip, r1]
    94                 add lr, lr, #1
    95                 cmp lr, r4
    96                 str r3, [ip, r0]
    97                 add ip, ip, #4
    98                 bne 5b
    99        
    100         6:
    101                 ands r4, r2, #3
    102                 beq 3b
    103                 mov r3, lr, lsl #2
    104                 add r0, r3, r0
    105                 add ip, r3, r1
    106                 mov r2, #0
    107        
    108         7:
    109                 ldrb r3, [r2, ip]
    110                 strb r3, [r2, r0]
    111                 add r2, r2, #1
    112                 cmp r2, r4
    113                 bne 7b
    114                 b 3b
    115 
    11656jump_to_kernel:
    11757        #
  • boot/arch/ia64/Makefile.inc

    r46757a6 ra2da43c  
    4949        genarch/src/division.c \
    5050        generic/src/balloc.c \
     51        generic/src/memstr.c \
    5152        generic/src/printf_core.c \
    5253        generic/src/vprintf.c \
  • boot/arch/ia64/src/asm.S

    r46757a6 ra2da43c  
    11#
    22# Copyright (c) 2006 Martin Decky
    3 # Copyright (c) 2006 Jakub Jermar 
     3# Copyright (c) 2006 Jakub Jermar
    44# All rights reserved.
    55#
     
    3939        br halt
    4040
    41 memcpy:
    42         alloc loc0 = ar.pfs, 3, 1, 0, 0
    43 
    44         adds r14 = 7, in1
    45         mov r2 = ar.lc
    46         mov r8 = in0 ;;
    47         and r14 = -8, r14 ;;
    48         cmp.ne p6, p7 = r14, in1
    49 (p7)    br.cond.dpnt 3f ;;
    50 0:
    51         cmp.ne p6, p7 = 0, in2
    52 (p7)    br.cond.dpnt 2f ;;
    53 (p6)    adds r14 = -1, in2
    54 (p6)    mov r16 = r0
    55 (p6)    mov r17 = r0 ;;
    56 (p6)    mov ar.lc = r14
    57 1:
    58         add r14 = r16, in1
    59         add r15 = r16, in0
    60         adds r17 = 1, r17 ;;
    61         ld1 r14 = [r14]
    62         mov r16 = r17 ;;
    63         st1 [r15] = r14
    64         br.cloop.sptk.few 1b ;;
    65 2:
    66         mov ar.lc = r2
    67         mov ar.pfs = loc0
    68         br.ret.sptk.many rp
    69 3:
    70         adds r14 = 7, in0 ;;
    71         and r14 = -8, r14 ;;
    72         cmp.eq p6, p7 = r14, in0
    73 (p7)    br.cond.dptk 0b
    74         shr.u r18 = in2, 3 ;;
    75         cmp.ne p6, p7 = 0, r18
    76 (p7)    br.cond.dpnt 5f ;;
    77 (p6)    adds r14 = -1, r18
    78 (p6)    mov r16 = r0
    79 (p6)    mov r17 = r0 ;;
    80 (p6)    mov ar.lc = r14
    81 4:
    82         shladd r14 = r16, 3, r0
    83         adds r16 = 1, r17 ;;
    84         add r15 = in1, r14
    85         add r14 = in0, r14
    86         mov r17 = r16 ;;
    87         ld8 r15 = [r15] ;;
    88         st8 [r14] = r15
    89         br.cloop.sptk.few 4b
    90 5:
    91         and r15 = 7, in2
    92         shladd r14 = r18, 3, r0
    93         mov r16 = r0
    94         mov r18 = r0 ;;
    95         cmp.eq p6, p7 = 0, r15
    96         add in0 = r14, in0
    97         adds r15 = -1, r15
    98         add r17 = r14, in1
    99 (p6)    br.cond.dpnt 2b ;;
    100         mov ar.lc = r15
    101 6:
    102         add r14 = r16, r17
    103         add r15 = r16, in0
    104         adds r16 = 1, r18 ;;
    105         ld1 r14 = [r14]
    106         mov r18 = r16 ;;
    107         st1 [r15] = r14
    108         br.cloop.sptk.few 6b ;;
    109         mov ar.lc = r2
    110         mov ar.pfs = loc0
    111         br.ret.sptk.many rp
    112 
    11341jump_to_kernel:
    11442        alloc loc0 = ar.pfs, 1, 1, 0, 0
  • boot/arch/mips32/Makefile.inc

    r46757a6 ra2da43c  
    6161        genarch/src/division.c \
    6262        genarch/src/multiplication.c \
     63        generic/src/memstr.c \
    6364        generic/src/printf_core.c \
    6465        generic/src/vprintf.c \
  • boot/arch/mips32/src/asm.S

    r46757a6 ra2da43c  
    3636.global start
    3737.global halt
    38 .global memcpy
    3938.global jump_to_kernel
    4039
     
    127126        nop
    128127
    129 memcpy:
    130         addiu $v0, $a1, 3
    131         li $v1, -4
    132         and $v0, $v0, $v1
    133         beq $a1, $v0, 3f
    134         move $t0, $a0
    135         move $t2, $a0
    136        
    137         0:
    138                 beq $a2, $zero, 2f
    139                 move $a3, $zero
    140        
    141         1:
    142                 addu $v0, $a1, $a3
    143                 lbu $a0, 0($v0)
    144                 addu $v1, $t0, $a3
    145                 addiu $a3, $a3, 1
    146                 bne $a3, $a2, 1b
    147                 sb $a0, 0($v1)
    148        
    149         2:
    150                 jr $ra
    151                 move $v0, $t2
    152        
    153         3:
    154                 addiu $v0, $a0, 3
    155                 and $v0, $v0, $v1
    156                 bne $a0, $v0, 0b
    157                 srl $t1, $a2, 2
    158                
    159                 beq $t1, $zero, 5f
    160                 move $a3, $zero
    161                
    162                 move $a3, $zero
    163                 move $a0, $zero
    164        
    165         4:
    166                 addu $v0, $a1, $a0
    167                 lw $v1, 0($v0)
    168                 addiu $a3, $a3, 1
    169                 addu $v0, $t0, $a0
    170                 sw $v1, 0($v0)
    171                 bne $a3, $t1, 4b
    172                 addiu $a0, $a0, 4
    173        
    174         5:
    175                 andi $a2, $a2, 0x3
    176                 beq $a2, $zero, 2b
    177                 nop
    178                
    179                 sll $v0, $a3, 2
    180                 addu $t1, $v0, $t0
    181                 move $a3, $zero
    182                 addu $t0, $v0, $a1
    183        
    184         6:
    185                 addu $v0, $t0, $a3
    186                 lbu $a0, 0($v0)
    187                 addu $v1, $t1, $a3
    188                 addiu $a3, $a3, 1
    189                 bne $a3, $a2, 6b
    190                 sb $a0, 0($v1)
    191                
    192                 jr $ra
    193                 move $v0, $t2
    194 
    195128jump_to_kernel:
    196129        #
  • boot/arch/ppc32/Makefile.inc

    r46757a6 ra2da43c  
    5656        genarch/src/multiplication.c \
    5757        generic/src/balloc.c \
     58        generic/src/memstr.c \
    5859        generic/src/printf_core.c \
    5960        generic/src/vprintf.c \
  • boot/arch/ppc32/src/asm.S

    r46757a6 ra2da43c  
    6060.global start
    6161.global halt
    62 .global memcpy
    6362.global jump_to_kernel
    6463.global real_mode
     
    7877halt:
    7978        b halt
    80 
    81 memcpy:
    82         srwi. r7, r5, 3
    83         addi r6, r3, -4
    84         addi r4, r4, -4
    85         beq 2f
    86        
    87         andi. r0, r6, 3
    88         mtctr r7
    89         bne 5f
    90        
    91         1:
    92                 lwz r7, 4(r4)
    93                 lwzu r8, 8(r4)
    94                 stw r7, 4(r6)
    95                 stwu r8, 8(r6)
    96                 bdnz 1b
    97                
    98                 andi. r5, r5, 7
    99        
    100         2:
    101                 cmplwi 0, r5, 4
    102                 blt 3f
    103                
    104                 lwzu r0, 4(r4)
    105                 addi r5, r5, -4
    106                 stwu r0, 4(r6)
    107        
    108         3:
    109                 cmpwi 0, r5, 0
    110                 beqlr
    111                 mtctr r5
    112                 addi r4, r4, 3
    113                 addi r6, r6, 3
    114        
    115         4:
    116                 lbzu r0, 1(r4)
    117                 stbu r0, 1(r6)
    118                 bdnz 4b
    119                 blr
    120        
    121         5:
    122                 subfic r0, r0, 4
    123                 mtctr r0
    124        
    125         6:
    126                 lbz r7, 4(r4)
    127                 addi r4, r4, 1
    128                 stb r7, 4(r6)
    129                 addi r6, r6, 1
    130                 bdnz 6b
    131                 subf r5, r0, r5
    132                 rlwinm. r7, r5, 32-3, 3, 31
    133                 beq 2b
    134                 mtctr r7
    135                 b 1b
    13679
    13780jump_to_kernel:
  • boot/arch/sparc64/Makefile.inc

    r46757a6 ra2da43c  
    5454        genarch/src/ofw_tree.c \
    5555        generic/src/balloc.c \
     56        generic/src/memstr.c \
    5657        generic/src/printf_core.c \
    5758        generic/src/vprintf.c \
  • boot/arch/sparc64/src/asm.S

    r46757a6 ra2da43c  
    4242.global start
    4343.global halt
    44 .global memcpy
    4544.global jump_to_kernel
    4645
     
    9897        ba %xcc, halt
    9998        nop
    100 
    101 memcpy:
    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
    16999
    170100jump_to_kernel:
Note: See TracChangeset for help on using the changeset viewer.