--- rpm-4.3/lib/rpmrc.c.orig 2004-03-29 14:43:40.000000000 +0200 +++ rpm-4.3/lib/rpmrc.c 2004-03-29 14:52:50.141270392 +0200 @@ -893,16 +893,13 @@ #ifdef __LCLINT__ *eax = *ebx = *ecx = *edx = 0; #endif -#ifdef PIC - __asm__("pushl %%ebx; cpuid; movl %%ebx,%1; popl %%ebx" - : "=a"(*eax), "=g"(*ebx), "=&c"(*ecx), "=&d"(*edx) - : "a" (op)); -#else - __asm__("cpuid" - : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) - : "a" (op)); -#endif - + asm volatile ( + "pushl %%ebx \n" + "cpuid \n" + "movl %%ebx, %%esi \n" + "popl %%ebx \n" + : "=a" (*eax), "=S" (*ebx), "=c" (*ecx), "=d" (*edx) + : "a" (op)); } /* @@ -911,15 +908,8 @@ static inline unsigned int cpuid_eax(unsigned int op) /*@*/ { - unsigned int val; - -#ifdef PIC - __asm__("pushl %%ebx; cpuid; popl %%ebx" - : "=a" (val) : "a" (op) : "ecx", "edx"); -#else - __asm__("cpuid" - : "=a" (val) : "a" (op) : "ebx", "ecx", "edx"); -#endif + unsigned int tmp, val; + cpuid(op, &val, &tmp, &tmp, &tmp); return val; } @@ -927,14 +917,7 @@ /*@*/ { unsigned int tmp, val; - -#ifdef PIC - __asm__("pushl %%ebx; cpuid; movl %%ebx,%1; popl %%ebx" - : "=a" (tmp), "=g" (val) : "a" (op) : "ecx", "edx"); -#else - __asm__("cpuid" - : "=a" (tmp), "=b" (val) : "a" (op) : "ecx", "edx"); -#endif + cpuid(op, &tmp, &val, &tmp, &tmp); return val; } @@ -942,30 +925,16 @@ /*@*/ { unsigned int tmp, val; -#ifdef PIC - __asm__("pushl %%ebx; cpuid; popl %%ebx" - : "=a" (tmp), "=c" (val) : "a" (op) : "edx"); -#else - __asm__("cpuid" - : "=a" (tmp), "=c" (val) : "a" (op) : "ebx", "edx"); -#endif + cpuid(op, &tmp, &tmp, &val, &tmp); return val; - } static inline unsigned int cpuid_edx(unsigned int op) /*@*/ { unsigned int tmp, val; -#ifdef PIC - __asm__("pushl %%ebx; cpuid; popl %%ebx" - : "=a" (tmp), "=d" (val) : "a" (op) : "ecx"); -#else - __asm__("cpuid" - : "=a" (tmp), "=d" (val) : "a" (op) : "ebx", "ecx"); -#endif + cpuid(op, &tmp, &tmp, &tmp, &val); return val; - } /*@unchecked@*/