Changeset 342de62 in mainline for arch/ia32/include/memstr.h
- Timestamp:
- 2005-10-05T19:42:32Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 49c1f93
- Parents:
- 1084a784
- File:
-
- 1 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
Note:
See TracChangeset
for help on using the changeset viewer.