Changeset 45f7449 in mainline for kernel/arch/ia32/src/asm.S
- Timestamp:
- 2013-03-31T19:46:19Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a5057cc
- Parents:
- 582f4d28
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/asm.S
r582f4d28 r45f7449 38 38 .global paging_on 39 39 .global enable_l_apic_in_msr 40 .global memset41 .global memcpy42 40 .global memcpy_from_uspace 43 41 .global memcpy_from_uspace_failover_address … … 46 44 .global early_putchar 47 45 48 #define MEMSET_DST 449 #define MEMSET_VAL 850 #define MEMSET_SIZE 1251 52 46 #define MEMCPY_DST 4 53 47 #define MEMCPY_SRC 8 54 48 #define MEMCPY_SIZE 12 55 56 /* Fill memory with byte pattern57 *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), %edi71 movl MEMSET_VAL(%esp), %ecx72 73 /* Create byte pattern */74 movb %cl, %ch75 movw %cx, %ax76 shll $16, %eax77 orw %cx, %ax78 79 movl MEMSET_SIZE(%esp), %ecx80 shrl $2, %ecx /* size / 4 */81 82 /* Write whole words */83 rep stosl84 85 movl MEMSET_SIZE(%esp), %ecx86 andl $3, %ecx /* size % 4 */87 jz 0f88 89 /* Copy the rest byte by byte */90 rep stosb91 92 0:93 94 movl %edx, %edi95 96 /* MEMSET_DST(%esp), success */97 movl MEMSET_DST(%esp), %eax98 ret99 49 100 50 /** Copy memory to/from userspace. … … 113 63 * 114 64 */ 115 memcpy:116 65 memcpy_from_uspace: 117 66 memcpy_to_uspace:
Note:
See TracChangeset
for help on using the changeset viewer.