Changeset 45f7449 in mainline for boot


Ignore:
Timestamp:
2013-03-31T19:46:19Z (13 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a5057cc
Parents:
582f4d28
Message:

Revert to the state of mainline,1783.

Location:
boot
Files:
4 edited

Legend:

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

    r582f4d28 r45f7449  
    5050endif
    5151
     52
    5253SOURCES = \
    5354        arch/$(BARCH)/src/asm.S \
  • boot/arch/mips32/src/asm.S

    r582f4d28 r45f7449  
    3737.global halt
    3838.global jump_to_kernel
    39 .global memset
    40 .global memcpy
    4139
    4240.section BOOTSTRAP
     
    160158        j $a0
    161159        nop
    162 
    163 memset:
    164         move $v0, $a0
    165         beqz $a2, 0f
    166         addiu $t1, $a2, -1
    167        
    168         negu $t0, $a0
    169         andi $t0, $t0, 0x3
    170         sltu $v1, $a2, $t0
    171         bnez $v1, 1f
    172         andi $a1, $a1, 0xff
    173        
    174         7:
    175                 sltiu $v1, $a2, 4
    176                 beqz $v1, 2f
    177                 move $v1, $v0
    178                
    179                  move $t0, $a2
    180        
    181         3:
    182                 sb $a1, 0($v1)
    183                 addiu $v1, $v1, 1
    184                 subu $a3, $v1, $v0
    185                 sltu $a3, $a3, $t0
    186                 bnez $a3, 3b
    187                 addiu $t1, $t1, -1
    188                
    189                 beq $a2, $t0, 0f
    190                 subu $a2, $a2, $t0
    191        
    192         8:
    193                 srl $a0, $a2, 0x2
    194                 sll $t4, $a0, 0x2
    195                 beqz $t4, 4f
    196                 sll $t2, $a1, 0x10
    197                
    198                 sll $t3, $a1, 0x8
    199                 or $t3, $a1, $t3
    200                 sll $a3, $a1, 0x18
    201                 or $t3, $t3, $t2
    202                 or $t3, $t3, $a3
    203                 addu $t0, $v0, $t0
    204                 move $a3, $zero
    205        
    206         5:
    207                 addiu $a3, $a3, 1
    208                 sltu $t2, $a3, $a0
    209                 sw $t3, 0($t0)
    210                 bnez $t2, 5b
    211                 addiu $t0, $t0, 4
    212                
    213                 addu $v1, $v1, $t4
    214                 beq $a2, $t4, 0f
    215                 subu $t1, $t1, $t4
    216        
    217         4:
    218                 addiu $t1, $t1, 1
    219                 addu $t1, $v1, $t1
    220                 sb $a1, 0($v1)
    221        
    222         6:
    223                 addiu $v1, $v1, 1
    224                 bnel $v1, $t1, 6b
    225                 sb $a1, 0($v1)
    226        
    227         0:
    228                 jr $ra
    229                 nop
    230        
    231         1:
    232                 j 7b
    233                 move $t0, $a2
    234        
    235         2:
    236                 bnez $t0, 3b
    237                 nop
    238                
    239                 j 8b
    240                 subu $a2, $a2, $t0
    241 
    242 memcpy:
    243         move $t2, $a0  /* save dst */
    244        
    245         addiu $v0, $a1, 3
    246         li $v1, -4  /* 0xfffffffffffffffc */
    247         and $v0, $v0, $v1
    248         beq $a1, $v0, 3f
    249         move $t0, $a0
    250        
    251         0:
    252                 beq $a2, $zero, 2f
    253                 move $a3, $zero
    254        
    255         1:
    256                 addu $v0, $a1, $a3
    257                 lbu $a0, 0($v0)
    258                 addu $v1, $t0, $a3
    259                 addiu $a3, $a3, 1
    260                 bne $a3, $a2, 1b
    261                 sb $a0, 0($v1)
    262        
    263         2:
    264                 jr $ra
    265                 move $v0, $t2
    266        
    267         3:
    268                 addiu $v0, $a0, 3
    269                 and $v0, $v0, $v1
    270                 bne $a0, $v0, 0b
    271                 srl $t1, $a2, 2
    272                
    273                 beq $t1, $zero, 5f
    274                 move $a3, $zero
    275                
    276                 move $a3, $zero
    277                 move $a0, $zero
    278        
    279         4:
    280                 addu $v0, $a1, $a0
    281                 lw $v1, 0($v0)
    282                 addiu $a3, $a3, 1
    283                 addu $v0, $t0, $a0
    284                 sw $v1, 0($v0)
    285                 bne $a3, $t1, 4b
    286                 addiu $a0, $a0, 4
    287        
    288         5:
    289                 andi $a2, $a2, 0x3
    290                 beq $a2, $zero, 2b
    291                 nop
    292                
    293                 sll $v0, $a3, 2
    294                 addu $t1, $v0, $t0
    295                 move $a3, $zero
    296                 addu $t0, $v0, $a1
    297        
    298         6:
    299                 addu $v0, $t0, $a3
    300                 lbu $a0, 0($v0)
    301                 addu $v1, $t1, $a3
    302                 addiu $a3, $a3, 1
    303                 bne $a3, $a2, 6b
    304                 sb $a0, 0($v1)
    305                
    306                 jr $ra
    307                 move $v0, $t2
  • boot/generic/include/memstr.h

    r582f4d28 r45f7449  
    3535#include <typedefs.h>
    3636
    37 #define memset(dst, val, cnt)  __builtin_memset((dst), (val), (cnt))
    38 #define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    39 
     37extern void *memcpy(void *, const void *, size_t);
     38extern void *memset(void *, int, size_t);
    4039extern void *memmove(void *, const void *, size_t);
    4140
  • boot/generic/src/memstr.c

    r582f4d28 r45f7449  
    2929#include <memstr.h>
    3030#include <typedefs.h>
     31
     32/** Move memory block without overlapping.
     33 *
     34 * Copy cnt bytes from src address to dst address. The source
     35 * and destination memory areas cannot overlap.
     36 *
     37 * @param dst Destination address to copy to.
     38 * @param src Source address to copy from.
     39 * @param cnt Number of bytes to copy.
     40 *
     41 * @return Destination address.
     42 *
     43 */
     44void *memcpy(void *dst, const void *src, size_t cnt)
     45{
     46        uint8_t *dp = (uint8_t *) dst;
     47        const uint8_t *sp = (uint8_t *) src;
     48       
     49        while (cnt-- != 0)
     50                *dp++ = *sp++;
     51       
     52        return dst;
     53}
     54
     55/** Fill block of memory.
     56 *
     57 * Fill cnt bytes at dst address with the value val.
     58 *
     59 * @param dst Destination address to fill.
     60 * @param val Value to fill.
     61 * @param cnt Number of bytes to fill.
     62 *
     63 * @return Destination address.
     64 *
     65 */
     66void *memset(void *dst, int val, size_t cnt)
     67{
     68        uint8_t *dp = (uint8_t *) dst;
     69       
     70        while (cnt-- != 0)
     71                *dp++ = val;
     72       
     73        return dst;
     74}
    3175
    3276/** Move memory block with possible overlapping.
Note: See TracChangeset for help on using the changeset viewer.