Rev 363 | Rev 392 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 363 | Rev 390 | ||
---|---|---|---|
Line 30... | Line 30... | ||
30 | #define __ia32_MEMSTR_H__ |
30 | #define __ia32_MEMSTR_H__ |
31 | 31 | ||
32 | extern void memsetw(__address dst, size_t cnt, __u16 x); |
32 | extern void memsetw(__address dst, size_t cnt, __u16 x); |
33 | extern void memsetb(__address dst, size_t cnt, __u8 x); |
33 | extern void memsetb(__address dst, size_t cnt, __u8 x); |
34 | 34 | ||
35 | extern int memcmp(__address src, __address dst, int cnt); |
- | |
36 | - | ||
37 | /** Copy memory |
35 | /** Copy memory |
38 | * |
36 | * |
39 | * Copy a given number of bytes (3rd argument) |
37 | * Copy a given number of bytes (3rd argument) |
40 | * from the memory location defined by 2nd argument |
38 | * from the memory location defined by 2nd argument |
41 | * to the memory location defined by 1st argument. |
39 | * to the memory location defined by 1st argument. |
Line 69... | Line 67... | ||
69 | 67 | ||
70 | return dst; |
68 | return dst; |
71 | } |
69 | } |
72 | 70 | ||
73 | 71 | ||
- | 72 | /** Compare memory |
|
- | 73 | * |
|
- | 74 | * Compare a given number of bytes (3rd argument) |
|
- | 75 | * at memory locations defined by 1st and 2nd argument |
|
- | 76 | * for equality. If memory is equal, returns 0. |
|
- | 77 | * |
|
- | 78 | * @param pointer 1 |
|
- | 79 | * @param pointer 2 |
|
- | 80 | * @param number of bytes |
|
- | 81 | * @return 0 on match or non-zero if different |
|
- | 82 | */ |
|
- | 83 | static inline int memcmp(const void * mem1, const void * mem2, size_t cnt) |
|
- | 84 | { |
|
- | 85 | __u32 d0, d1, d2; |
|
- | 86 | int ret; |
|
- | 87 | ||
- | 88 | __asm__ ( |
|
- | 89 | "repe cmpsb\n\t" |
|
- | 90 | "je 1f\n\t" |
|
- | 91 | "movl %3, %0\n\t" |
|
- | 92 | "addl $1, %0\n\t" |
|
- | 93 | "1:\n" |
|
- | 94 | : "=a" (ret), "=%S" (d0), "=&D" (d1), "=&c" (d2) |
|
- | 95 | : "0" (0), "1" (mem1), "2" (mem2), "3" (cnt) |
|
- | 96 | ); |
|
- | 97 | ||
- | 98 | return ret; |
|
- | 99 | } |
|
74 | 100 | ||
75 | #endif |
101 | #endif |