#define FAMILY_486 4 |
proc_get_family() processor family: 486
#define FAMILY_ATHLON 6 |
proc_get_family() processor family: Athlon
#define FAMILY_CORE 6 |
proc_get_family() processor family: Core
#define FAMILY_CORE_2 6 |
proc_get_family() processor family: Core 2
#define FAMILY_ITANIUM 7 |
proc_get_family() processor family: Itanium
#define FAMILY_ITANIUM_2 16 |
proc_get_family() processor family: Itanium 2
#define FAMILY_ITANIUM_2_DC 17 |
proc_get_family() processor family: Itanium 2 DC
#define FAMILY_K5 5 |
proc_get_family() processor family: K5
#define FAMILY_K6 5 |
proc_get_family() processor family: K6
#define FAMILY_K8 15 |
proc_get_family() processor family: AMD K8
#define FAMILY_K8L 16 |
proc_get_family() processor family: AMD K8L
#define FAMILY_PENTIUM 5 |
proc_get_family() processor family: Pentium
#define FAMILY_PENTIUM_2 6 |
proc_get_family() processor family: Pentium 2
#define FAMILY_PENTIUM_3 6 |
proc_get_family() processor family: Pentium 3
#define FAMILY_PENTIUM_4 15 |
proc_get_family() processor family: Pentium 4
#define FAMILY_PENTIUM_M 6 |
proc_get_family() processor family: Pentium M
#define FAMILY_PENTIUM_PRO 6 |
proc_get_family() processor family: Pentium Pro
#define MODEL_CORE 14 |
proc_get_model() processor model: Core
#define MODEL_CORE_2 15 |
proc_get_model() processor model: Core 2
#define MODEL_PENTIUM_M 13 |
proc_get_model() processor model: Pentium M 2MB L2
#define MODEL_PENTIUM_M_1MB 9 |
proc_get_model() processor model: Pentium M 1MB L2
#define PAGE_SIZE (4*1024) |
Size of a page of memory. Convenience macro to align to the start of a page of memory.
anonymous enum |
Constants returned by proc_get_vendor().
VENDOR_INTEL | proc_get_vendor() processor identification: Intel |
VENDOR_AMD | proc_get_vendor() processor identification: AMD |
VENDOR_UNKNOWN | proc_get_vendor() processor identification: unknown |
enum cache_size_t |
L1 and L2 cache sizes, used by proc_get_L1_icache_size(), proc_get_L1_dcache_size(), proc_get_L2_cache_size(), and proc_get_cache_size_str().
enum feature_bit_t |
Feature bits returned by cpuid. Pass one of these values to proc_has_feature() to determine whether the underlying processor has the feature.
void dr_insert_restore_fpstate | ( | void * | drcontext, | |
instrlist_t * | ilist, | |||
instr_t * | where, | |||
opnd_t | buf | |||
) |
Inserts into ilist
prior to where
meta-instruction(s) to restore the floating point state from the 16-byte-aligned buffer referred to by buf, which must be 512 bytes for processors with the FXSR feature, and 108 bytes for those without (where this routine does not support 16-bit operand sizing). buf
should have size of OPSZ_512; this routine will automatically adjust it to OPSZ_108 if necessary.
Inserts into ilist
prior to where
meta-instruction(s) to save the floating point state into the 16-byte-aligned buffer referred to by buf
, which must be 512 bytes for processors with the FXSR feature, and 108 bytes for those without (where this routine does not support 16-bit operand sizing). buf
should have size of OPSZ_512; this routine will automatically adjust it to OPSZ_108 if necessary.
ptr_uint_t proc_bump_to_end_of_cache_line | ( | ptr_uint_t | sz | ) |
Returns n >= sz
such that n is a multiple of the cache line size.
size_t proc_fpstate_save_size | ( | void | ) |
Returns the size in bytes needed for a buffer for saving the floating point state.
features_t* proc_get_all_feature_bits | ( | void | ) |
Returns all 4 32-bit feature values. Use proc_has_feature to test for specific features.
char* proc_get_brand_string | ( | void | ) |
Returns the processor brand string as given by the cpuid instruction.
size_t proc_get_cache_line_size | ( | void | ) |
Returns the cache line size in bytes of the processor.
const char* proc_get_cache_size_str | ( | cache_size_t | size | ) |
Converts a cache_size_t type to a string.
void* proc_get_containing_page | ( | void * | addr | ) |
Returns n <= addr
such that n is a multiple of the page size.
uint proc_get_family | ( | void | ) |
Returns the processor family as given by the cpuid instruction, adjusted by the extended family as described in the Intel documentation. The FAMILY_ constants identify important family values.
cache_size_t proc_get_L1_dcache_size | ( | void | ) |
Returns the size of the L1 data cache.
cache_size_t proc_get_L1_icache_size | ( | void | ) |
Returns the size of the L1 instruction cache.
cache_size_t proc_get_L2_cache_size | ( | void | ) |
Returns the size of the L2 cache.
uint proc_get_model | ( | void | ) |
Returns the processor model as given by the cpuid instruction, adjusted by the extended model as described in the Intel documentation. The MODEL_ constants identify important model values.
uint proc_get_stepping | ( | void | ) |
Returns the processor stepping ID.
uint proc_get_type | ( | void | ) |
Returns the processor type as given by the cpuid instruction.
uint proc_get_vendor | ( | void | ) |
Returns one of the VENDOR_ constants.
bool proc_has_feature | ( | feature_bit_t | feature | ) |
Tests if processor has selected feature.
bool proc_is_cache_aligned | ( | void * | addr | ) |
Returns true only if addr
is cache-line-aligned.
void proc_restore_fpstate | ( | byte * | buf | ) |
Restores the floating point state from the 16-byte-aligned buffer buf
, which must be 512 bytes for processors with the FXSR feature, and 108 bytes for those without (where this routine does not support 16-bit operand sizing).
size_t proc_save_fpstate | ( | byte * | buf | ) |
Saves the floating point state into the 16-byte-aligned buffer buf
, which must be 512 bytes for processors with the FXSR feature, and 108 bytes for those without (where this routine does not support 16-bit operand sizing).