1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#![doc = include_str!("./README.md")]
#![cfg_attr(not(feature = "std"), no_std)]

use core::arch::x86_64::CpuidResult;

// pub const _AX: u32 = 0x8000_0000;

#[macro_export]
macro_rules! cpuid {
    ($leaf: expr) => {
        unsafe { core::arch::x86_64::__cpuid_count($leaf, 0x0) }
    };
    ($leaf: expr, $sub_leaf: expr) => {
        unsafe { core::arch::x86_64::__cpuid_count($leaf, $sub_leaf) }
    };
}

#[macro_use]
pub mod util;
// pub use util::*;

mod codename;
pub use codename::*;

mod vendor;
pub use vendor::*;

mod micro_arch_level;
pub use micro_arch_level::*;

#[cfg(feature = "std")]
mod proc_name;
#[cfg(feature = "std")]
pub use proc_name::*;

mod cache_prop;
pub use cache_prop::*;

mod info_01h_ebx;
pub use info_01h_ebx::*;

mod monitor_mwait_00_05h;
pub use monitor_mwait_00_05h::*;

mod intel_ext_topo_0bh_1fh;
pub use intel_ext_topo_0bh_1fh::*;

mod amd_tlb_info;
pub use amd_tlb_info::*;

mod intel_tlb_param_00_18h;
pub use intel_tlb_param_00_18h::*;

mod hybrid_info_00_1ah;
pub use hybrid_info_00_1ah::*;

mod topo_info;
pub use topo_info::*;

#[cfg(feature = "std")]
mod hybrid_topology;
#[cfg(feature = "std")]
pub use hybrid_topology::*;

mod addr_size_80_08h_eax;
pub use addr_size_80_08h_eax::*;

mod amd_size_id_80_08h_ecx;
pub use amd_size_id_80_08h_ecx::*;

mod amd_pkg_type_80_01h;
pub use amd_pkg_type_80_01h::*;

mod amd_proc_topo_80_1eh;
pub use amd_proc_topo_80_1eh::*;

mod amd_ext_topo_80_26h;
pub use amd_ext_topo_80_26h::*;