Changeset 45f7449 in mainline for kernel/arch


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:
kernel/arch
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/asm.S

    r582f4d28 r45f7449  
    3737.global read_efer_flag
    3838.global set_efer_flag
    39 .global memset
    40 .global memcpy
    4139.global memcpy_from_uspace
    4240.global memcpy_to_uspace
     
    4543.global early_putchar
    4644
    47 #define MEMSET_DST   %rdi
    48 #define MEMSET_VAL   %rsi
    49 #define MEMSET_SIZE  %rdx
    50 
    5145#define MEMCPY_DST   %rdi
    5246#define MEMCPY_SRC   %rsi
    5347#define MEMCPY_SIZE  %rdx
    5448
    55 /* Fill memory with byte pattern
    56  *
    57  * This is a conventional memset().
    58  *
    59  * @param MEMSET_DST  Destination address.
    60  * @param MEMSET_VAL  Value to fill.
    61  * @param MEMSET_SIZE Size.
    62  *
    63  * @return MEMSET_DST.
    64  *
    65  */
    66 memset:
    67         movq MEMSET_DST, %r8    /* save %rdi */
    68        
    69         /* Create byte pattern */
    70         movzbl %sil, %esi       /* MEMSET_VAL */
    71         movabs $0x0101010101010101, %rax
    72         imulq %rsi, %rax
    73        
    74         movq MEMSET_SIZE, %rcx
    75         shrq $3, %rcx           /* size / 8 */
    76        
    77         rep stosq               /* store as much as possible word by word */
    78        
    79         movq MEMSET_SIZE, %rcx
    80         andq $7, %rcx           /* size % 8 */
    81         jz 0f
    82        
    83         rep stosb               /* store the rest byte by byte */
    84        
    85         0:
    86                 movq %r8, %rax
    87                 ret                 /* return MEMCPY_SRC, success */
    88 
    89 /** Copy memory from/to userspace.
     49/**
     50 * Copy memory from/to userspace.
    9051 *
    9152 * This is almost conventional memcpy().
     
    10263 *
    10364 */
    104 memcpy:
    10565memcpy_from_uspace:
    10666memcpy_to_uspace:
  • kernel/arch/ia32/src/asm.S

    r582f4d28 r45f7449  
    3838.global paging_on
    3939.global enable_l_apic_in_msr
    40 .global memset
    41 .global memcpy
    4240.global memcpy_from_uspace
    4341.global memcpy_from_uspace_failover_address
     
    4644.global early_putchar
    4745
    48 #define MEMSET_DST   4
    49 #define MEMSET_VAL   8
    50 #define MEMSET_SIZE  12
    51 
    5246#define MEMCPY_DST   4
    5347#define MEMCPY_SRC   8
    5448#define MEMCPY_SIZE  12
    55 
    56 /* Fill memory with byte pattern
    57  *
    58  * This is a conventional memset().
    59  *
    60  * @param MEMSET_DST(%esp)  Destination address.
    61  * @param MEMSET_VAL(%esp)  Value to fill.
    62  * @param MEMSET_SIZE(%esp) Size.
    63  *
    64  * @return MEMSET_DST(%esp).
    65  *
    66  */
    67 memset:
    68         movl %edi, %edx  /* save %edi */
    69        
    70         movl MEMSET_DST(%esp), %edi
    71         movl MEMSET_VAL(%esp), %ecx
    72        
    73         /* Create byte pattern */
    74         movb %cl, %ch
    75         movw %cx, %ax
    76         shll $16, %eax
    77         orw %cx, %ax
    78        
    79         movl MEMSET_SIZE(%esp), %ecx
    80         shrl $2, %ecx  /* size / 4 */
    81        
    82         /* Write whole words */
    83         rep stosl
    84        
    85         movl MEMSET_SIZE(%esp), %ecx
    86         andl $3, %ecx  /* size % 4 */
    87         jz 0f
    88        
    89         /* Copy the rest byte by byte */
    90         rep stosb
    91        
    92         0:
    93        
    94                 movl %edx, %edi
    95                
    96                 /* MEMSET_DST(%esp), success */
    97                 movl MEMSET_DST(%esp), %eax
    98                 ret
    9949
    10050/** Copy memory to/from userspace.
     
    11363 *
    11464 */
    115 memcpy:
    11665memcpy_from_uspace:
    11766memcpy_to_uspace:
  • kernel/arch/mips32/src/asm.S

    r582f4d28 r45f7449  
    5757        nop
    5858
    59 .global memset
    60 .global memcpy
    6159.global memcpy_from_uspace
    6260.global memcpy_to_uspace
    6361.global memcpy_from_uspace_failover_address
    6462.global memcpy_to_uspace_failover_address
    65 
    66 memset:
    67         move $v0, $a0
    68         beqz $a2, 0f
    69         addiu $t1, $a2, -1
    70        
    71         negu $t0, $a0
    72         andi $t0, $t0, 0x3
    73         sltu $v1, $a2, $t0
    74         bnez $v1, 1f
    75         andi $a1, $a1, 0xff
    76        
    77         7:
    78                 sltiu $v1, $a2, 4
    79                 beqz $v1, 2f
    80                 move $v1, $v0
    81                
    82                 move $t0, $a2
    83        
    84         3:
    85                 sb $a1, 0($v1)
    86                 addiu $v1, $v1, 1
    87                 subu $a3, $v1, $v0
    88                 sltu $a3, $a3, $t0
    89                 bnez $a3, 3b
    90                 addiu $t1, $t1, -1
    91                
    92                 beq $a2, $t0, 0f
    93                 subu $a2, $a2, $t0
    94        
    95         8:
    96                 srl $a0, $a2, 0x2
    97                 sll $t4, $a0, 0x2
    98                 beqz $t4, 4f
    99                 sll $t2, $a1, 0x10
    100                
    101                 sll $t3, $a1, 0x8
    102                 or $t3, $a1, $t3
    103                 sll $a3, $a1, 0x18
    104                 or $t3, $t3, $t2
    105                 or $t3, $t3, $a3
    106                 addu $t0, $v0, $t0
    107                 move $a3, $zero
    108        
    109         5:
    110                 addiu $a3, $a3, 1
    111                 sltu $t2, $a3, $a0
    112                 sw $t3, 0($t0)
    113                 bnez $t2, 5b
    114                 addiu $t0, $t0, 4
    115                
    116                 addu $v1, $v1, $t4
    117                 beq $a2, $t4, 0f
    118                 subu $t1, $t1, $t4
    119        
    120         4:
    121                 addiu $t1, $t1, 1
    122                 addu $t1, $v1, $t1
    123                 sb $a1, 0($v1)
    124        
    125         6:
    126                 addiu $v1, $v1, 1
    127                 bnel $v1, $t1, 6b
    128                 sb $a1, 0($v1)
    129        
    130         0:
    131                 jr $ra
    132                 nop
    133        
    134         1:
    135                 j 7b
    136                 move $t0, $a2
    137        
    138         2:
    139                 bnez $t0, 3b
    140                 nop
    141                
    142                 j 8b
    143                 subu $a2, $a2, $t0
    144 
    145 memcpy:
    14663memcpy_from_uspace:
    14764memcpy_to_uspace:
Note: See TracChangeset for help on using the changeset viewer.