Patch from Michael Bonfils to add CPUID support for x86 Solaris.
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401232
This commit is contained in:
parent
62c43568f9
commit
b1c0273cee
1 changed files with 64 additions and 0 deletions
|
@ -116,6 +116,36 @@ CPUid by definition. But it's nice to be able to prove it. :) */
|
||||||
mov has_CPUID,1 ; We have CPUID support
|
mov has_CPUID,1 ; We have CPUID support
|
||||||
done:
|
done:
|
||||||
}
|
}
|
||||||
|
#elif defined(__sun) && defined(__x86)
|
||||||
|
__asm (
|
||||||
|
" pushfl \n"
|
||||||
|
" popl %eax \n"
|
||||||
|
" movl %eax,%ecx \n"
|
||||||
|
" xorl $0x200000,%eax \n"
|
||||||
|
" pushl %eax \n"
|
||||||
|
" popfl \n"
|
||||||
|
" pushfl \n"
|
||||||
|
" popl %eax \n"
|
||||||
|
" xorl %ecx,%eax \n"
|
||||||
|
" jz 1f \n"
|
||||||
|
" movl $1,-8(%ebp) \n"
|
||||||
|
"1: \n"
|
||||||
|
);
|
||||||
|
#elif defined(__sun) && defined(__amd64)
|
||||||
|
__asm (
|
||||||
|
" pushfq \n"
|
||||||
|
" popq %rax \n"
|
||||||
|
" movq %rax,%rcx \n"
|
||||||
|
" xorl $0x200000,%eax \n"
|
||||||
|
" pushq %rax \n"
|
||||||
|
" popfq \n"
|
||||||
|
" pushfq \n"
|
||||||
|
" popq %rax \n"
|
||||||
|
" xorl %ecx,%eax \n"
|
||||||
|
" jz 1f \n"
|
||||||
|
" movl $1,-8(%rbp) \n"
|
||||||
|
"1: \n"
|
||||||
|
);
|
||||||
#endif
|
#endif
|
||||||
return has_CPUID;
|
return has_CPUID;
|
||||||
}
|
}
|
||||||
|
@ -152,6 +182,23 @@ static __inline__ int CPU_getCPUIDFeatures()
|
||||||
mov features, edx
|
mov features, edx
|
||||||
done:
|
done:
|
||||||
}
|
}
|
||||||
|
#elif defined(__sun) && (defined(__x86) || defined(__amd64))
|
||||||
|
__asm(
|
||||||
|
" movl %ebx,%edi\n"
|
||||||
|
" xorl %eax,%eax \n"
|
||||||
|
" cpuid \n"
|
||||||
|
" cmpl $1,%eax \n"
|
||||||
|
" jl 1f \n"
|
||||||
|
" xorl %eax,%eax \n"
|
||||||
|
" incl %eax \n"
|
||||||
|
" cpuid \n"
|
||||||
|
#ifdef __i386
|
||||||
|
" movl %edx,-8(%ebp) \n"
|
||||||
|
#else
|
||||||
|
" movl %edx,-8(%rbp) \n"
|
||||||
|
#endif
|
||||||
|
"1: \n"
|
||||||
|
" movl %edi,%ebx\n" );
|
||||||
#endif
|
#endif
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
@ -186,6 +233,23 @@ static __inline__ int CPU_getCPUIDFeaturesExt()
|
||||||
mov features,edx
|
mov features,edx
|
||||||
done:
|
done:
|
||||||
}
|
}
|
||||||
|
#elif defined(__sun) && ( defined(__i386) || defined(__amd64) )
|
||||||
|
__asm (
|
||||||
|
" movl %ebx,%edi\n"
|
||||||
|
" movl $0x80000000,%eax \n"
|
||||||
|
" cpuid \n"
|
||||||
|
" cmpl $0x80000001,%eax \n"
|
||||||
|
" jl 1f \n"
|
||||||
|
" movl $0x80000001,%eax \n"
|
||||||
|
" cpuid \n"
|
||||||
|
#ifdef __i386
|
||||||
|
" movl %edx,-8(%ebp) \n"
|
||||||
|
#else
|
||||||
|
" movl %edx,-8(%rbp) \n"
|
||||||
|
#endif
|
||||||
|
"1: \n"
|
||||||
|
" movl %edi,%ebx\n"
|
||||||
|
);
|
||||||
#endif
|
#endif
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue