|
Lines 892-898
static inline void cpuid(unsigned int op
|
Link Here
|
|---|
|
#ifdef __LCLINT__ | #ifdef __LCLINT__ |
*eax = *ebx = *ecx = *edx = 0; | *eax = *ebx = *ecx = *edx = 0; |
#endif | #endif |
#ifdef PIC |
#ifdef __PIC__ |
__asm__("pushl %%ebx; cpuid; movl %%ebx,%1; popl %%ebx" | __asm__("pushl %%ebx; cpuid; movl %%ebx,%1; popl %%ebx" |
: "=a"(*eax), "=g"(*ebx), "=&c"(*ecx), "=&d"(*edx) | : "=a"(*eax), "=g"(*ebx), "=&c"(*ecx), "=&d"(*edx) |
: "a" (op)); | : "a" (op)); |
|
Lines 912-918
static inline unsigned int cpuid_eax(uns
|
Link Here
|
|---|
|
{ | { |
unsigned int val; | unsigned int val; |
| |
#ifdef PIC |
#ifdef __PIC__ |
__asm__("pushl %%ebx; cpuid; popl %%ebx" | __asm__("pushl %%ebx; cpuid; popl %%ebx" |
: "=a" (val) : "a" (op) : "ecx", "edx"); | : "=a" (val) : "a" (op) : "ecx", "edx"); |
#else | #else |
|
Lines 927-933
static inline unsigned int cpuid_ebx(uns
|
Link Here
|
|---|
|
{ | { |
unsigned int tmp, val; | unsigned int tmp, val; |
| |
#ifdef PIC |
#ifdef __PIC__ |
__asm__("pushl %%ebx; cpuid; movl %%ebx,%1; popl %%ebx" | __asm__("pushl %%ebx; cpuid; movl %%ebx,%1; popl %%ebx" |
: "=a" (tmp), "=g" (val) : "a" (op) : "ecx", "edx"); | : "=a" (tmp), "=g" (val) : "a" (op) : "ecx", "edx"); |
#else | #else |
|
Lines 941-947
static inline unsigned int cpuid_ecx(uns
|
Link Here
|
|---|
|
/*@*/ | /*@*/ |
{ | { |
unsigned int tmp, val; | unsigned int tmp, val; |
#ifdef PIC |
#ifdef __PIC__ |
__asm__("pushl %%ebx; cpuid; popl %%ebx" | __asm__("pushl %%ebx; cpuid; popl %%ebx" |
: "=a" (tmp), "=c" (val) : "a" (op) : "edx"); | : "=a" (tmp), "=c" (val) : "a" (op) : "edx"); |
#else | #else |
|
Lines 956-962
static inline unsigned int cpuid_edx(uns
|
Link Here
|
|---|
|
/*@*/ | /*@*/ |
{ | { |
unsigned int tmp, val; | unsigned int tmp, val; |
#ifdef PIC |
#ifdef __PIC__ |
__asm__("pushl %%ebx; cpuid; popl %%ebx" | __asm__("pushl %%ebx; cpuid; popl %%ebx" |
: "=a" (tmp), "=d" (val) : "a" (op) : "ecx"); | : "=a" (tmp), "=d" (val) : "a" (op) : "ecx"); |
#else | #else |