(self, max_extension_support)
| 766 | |
| 767 | # http://en.wikipedia.org/wiki/CPUID#EAX.3D1:_Processor_Info_and_Feature_Bits |
| 768 | def get_flags(self, max_extension_support): |
| 769 | # EDX |
| 770 | edx = self._run_asm( |
| 771 | self._one_eax(), |
| 772 | b"\x0f\xa2" # cpuid |
| 773 | b"\x89\xD0" # mov ax,dx |
| 774 | b"\xC3" # ret |
| 775 | ) |
| 776 | |
| 777 | # ECX |
| 778 | ecx = self._run_asm( |
| 779 | self._one_eax(), |
| 780 | b"\x0f\xa2" # cpuid |
| 781 | b"\x89\xC8" # mov ax,cx |
| 782 | b"\xC3" # ret |
| 783 | ) |
| 784 | |
| 785 | # Get the CPU flags |
| 786 | flags = { |
| 787 | 'fpu' : is_bit_set(edx, 0), |
| 788 | 'vme' : is_bit_set(edx, 1), |
| 789 | 'de' : is_bit_set(edx, 2), |
| 790 | 'pse' : is_bit_set(edx, 3), |
| 791 | 'tsc' : is_bit_set(edx, 4), |
| 792 | 'msr' : is_bit_set(edx, 5), |
| 793 | 'pae' : is_bit_set(edx, 6), |
| 794 | 'mce' : is_bit_set(edx, 7), |
| 795 | 'cx8' : is_bit_set(edx, 8), |
| 796 | 'apic' : is_bit_set(edx, 9), |
| 797 | #'reserved1' : is_bit_set(edx, 10), |
| 798 | 'sep' : is_bit_set(edx, 11), |
| 799 | 'mtrr' : is_bit_set(edx, 12), |
| 800 | 'pge' : is_bit_set(edx, 13), |
| 801 | 'mca' : is_bit_set(edx, 14), |
| 802 | 'cmov' : is_bit_set(edx, 15), |
| 803 | 'pat' : is_bit_set(edx, 16), |
| 804 | 'pse36' : is_bit_set(edx, 17), |
| 805 | 'pn' : is_bit_set(edx, 18), |
| 806 | 'clflush' : is_bit_set(edx, 19), |
| 807 | #'reserved2' : is_bit_set(edx, 20), |
| 808 | 'dts' : is_bit_set(edx, 21), |
| 809 | 'acpi' : is_bit_set(edx, 22), |
| 810 | 'mmx' : is_bit_set(edx, 23), |
| 811 | 'fxsr' : is_bit_set(edx, 24), |
| 812 | 'sse' : is_bit_set(edx, 25), |
| 813 | 'sse2' : is_bit_set(edx, 26), |
| 814 | 'ss' : is_bit_set(edx, 27), |
| 815 | 'ht' : is_bit_set(edx, 28), |
| 816 | 'tm' : is_bit_set(edx, 29), |
| 817 | 'ia64' : is_bit_set(edx, 30), |
| 818 | 'pbe' : is_bit_set(edx, 31), |
| 819 | |
| 820 | 'pni' : is_bit_set(ecx, 0), |
| 821 | 'pclmulqdq' : is_bit_set(ecx, 1), |
| 822 | 'dtes64' : is_bit_set(ecx, 2), |
| 823 | 'monitor' : is_bit_set(ecx, 3), |
| 824 | 'ds_cpl' : is_bit_set(ecx, 4), |
| 825 | 'vmx' : is_bit_set(ecx, 5), |
no test coverage detected