Changeset 342de62 in mainline
- Timestamp:
- 2005-10-05T19:42:32Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 49c1f93
- Parents:
- 1084a784
- Location:
- arch/ia32
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia32/include/memstr.h
r1084a784 r342de62 29 29 #ifndef __ia32_MEMSTR_H__ 30 30 #define __ia32_MEMSTR_H__ 31 32 extern void memsetw(__address dst, size_t cnt, __u16 x);33 extern void memsetb(__address dst, size_t cnt, __u8 x);34 31 35 32 /** Copy memory … … 70 67 71 68 72 /** Compare memory 69 /** Compare memory regions for equality 73 70 * 74 71 * Compare a given number of bytes (3rd argument) 75 72 * at memory locations defined by 1st and 2nd argument 76 * for equality. If memory is equal,returns 0.73 * for equality. If bytes are equal function returns 0. 77 74 * 78 * @param pointer179 * @param pointer275 * @param region 1 76 * @param region 2 80 77 * @param number of bytes 81 * @return 0 on match or non-zero if different78 * @return zero if bytes are equal, non-zero otherwise 82 79 */ 83 static inline int memcmp( const void * mem1, const void * mem2, size_t cnt)80 static inline int memcmp(__address src, __address dst, size_t cnt) 84 81 { 85 82 __u32 d0, d1, d2; … … 93 90 "1:\n" 94 91 : "=a" (ret), "=%S" (d0), "=&D" (d1), "=&c" (d2) 95 : "0" (0), "1" ( mem1), "2" (mem2), "3" (cnt)92 : "0" (0), "1" (src), "2" (dst), "3" (cnt) 96 93 ); 97 94 … … 99 96 } 100 97 98 /** Fill memory with words 99 * Fill a given number of words (2nd argument) 100 * at memory defined by 1st argument with the 101 * word value defined by 3rd argument. 102 * 103 * @param destination 104 * @param number of words 105 * @param value to fill 106 */ 107 static inline void memsetw(__address dst, size_t cnt, __u16 x) 108 { 109 __u32 d0, d1; 110 111 __asm__ __volatile__ ( 112 "rep stosw\n\t" 113 : "=&D" (d0), "=&c" (d1), "=a" (x) 114 : "0" (dst), "1" (cnt), "2" (x) 115 : "memory" 116 ); 117 118 } 119 120 /** Fill memory with bytes 121 * Fill a given number of bytes (2nd argument) 122 * at memory defined by 1st argument with the 123 * word value defined by 3rd argument. 124 * 125 * @param destination 126 * @param number of bytes 127 * @param value to fill 128 */ 129 static inline void memsetb(__address dst, size_t cnt, __u8 x) 130 { 131 __u32 d0, d1; 132 133 __asm__ __volatile__ ( 134 "rep stosb\n\t" 135 : "=&D" (d0), "=&c" (d1), "=a" (x) 136 : "0" (dst), "1" (cnt), "2" (x) 137 : "memory" 138 ); 139 140 } 141 101 142 #endif -
arch/ia32/src/asm.S
r1084a784 r342de62 38 38 .global enable_l_apic_in_msr 39 39 .global interrupt_handlers 40 .global memsetb41 .global memsetw42 40 43 41 ## Turn paging on … … 152 150 153 151 154 ## Fill memory with bytes155 #156 # Fill a given number of bytes (2nd argument)157 # at memory defined by 1st argument with the158 # byte value defined by 3rd argument.159 #160 DST=12161 CNT=16162 X=20163 memsetb:164 push %eax165 push %edi166 167 movl CNT(%esp),%ecx168 movl DST(%esp),%edi169 movl X(%esp),%eax170 171 rep stosb %al,%es:(%edi)172 173 pop %edi174 pop %eax175 ret176 177 178 ## Fill memory with words179 #180 # Fill a given number of words (2nd argument)181 # at memory defined by 1st argument with the182 # word value defined by 3rd argument.183 #184 DST=12185 CNT=16186 X=20187 memsetw:188 push %eax189 push %edi190 191 movl CNT(%esp),%ecx192 movl DST(%esp),%edi193 movl X(%esp),%eax194 195 rep stosw %ax,%es:(%edi)196 197 pop %edi198 pop %eax199 200 ret201 202 203 152 # THIS IS USERSPACE CODE 204 153 .global utext -
arch/ia32/src/ia32.c
r1084a784 r342de62 51 51 #include <arch/mm/memory_init.h> 52 52 53 54 53 void arch_pre_mm_init(void) 55 54 {
Note:
See TracChangeset
for help on using the changeset viewer.