printf("Arg: %f Sin: %f Cos: %f\n", arg, sin, cos);
}
-static inline int mov(int val)
+static inline int mov_noeax(int val)
{
int res;
- __asm__ ("movl %1, %0" : "=r"(res) : "ri" (val));
+ __asm__ ("movl %1, %0" : "=r"(res) : "ri" (val) : "eax");
return res;
}
return x;
}
+void inc(int *v)
+{
+ __asm__("incl %0" : "+rm" (*v) : : "cc");
+}
+
+void inc2(int *v)
+{
+ __asm__("incl %0" : "+m" (*v) : : "cc");
+}
+
#if 1
typedef struct kernel_fd_set {
int bla;
#endif
void fd_set(int fd, kernel_fd_set* set) {
- __asm__("btsl %1,%0" : "=m" (*(set)) : "r" (fd));
+ __asm__("btsl %1,%0" : "=m" (*(set)) : "r" (fd) : "cc");
}
int fd_isset(int fd, kernel_fd_set *set) {
__asm__ __volatile__("btl %1,%2\n"
"\tsetb %0"
: "=q" (result)
- : "r" (fd), "m" (*set));
+ : "r" (fd), "m" (*set)
+ : "cc");
return result;
}
int main()
{
kernel_fd_set s;
+ int k;
fd_set(20, &s);
assert(fd_isset(20, &s));
- printf("Swap16: %d Swap32: %d\n", swap16(12), swap32(123551235));
+ printf("Swap16(0xAABB): %X Swap32(0xAABBCCDD): %X\n",
+ swap16(0xAABB), swap32(0xAABBCCDD));
+ k = 41;
+ inc(&k);
+ printf("mov(inc(41)): %d\n", mov_noeax(k));
- return mov(0);
+ return mov_noeax(0);
}
#else