1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
struct A { unsigned long buf[100]; }; int foo(unsigned int *x) { unsigned int a; if (!x) return -22; #ifdef __ia64__ if (({ register long b asm ("r8") = 0; register long c asm ("r9") = 0; asm ("" : "=r"(c), "=r"(b) : "m"(*(struct A *)x), "1"(b)); a = (unsigned int) c; b; })) return -14; #endif return 0; }