[haiku-commits] haiku: hrev54610 - src/system/kernel/arch/x86 headers/private/kernel/arch/x86

  • From: Jérôme Duval <jerome.duval@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 2 Oct 2020 13:12:09 -0400 (EDT)

hrev54610 adds 2 changesets to branch 'master'
old head: c0de5f6a5fbd231d8891b1f420617330ddba0735
new head: 64331e96ca9d657f8823e5f870721c8f7770da1f
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=64331e96ca9d+%5Ec0de5f6a5fbd

----------------------------------------------------------------------------

011fd524a103: kernel/x86: dump features 7 ecx
  
  Change-Id: I4c166ceb64c3a472ee2a849beca6ee041ef3af89
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/3279
  Reviewed-by: Rene Gollent <rene@xxxxxxxxxxx>

64331e96ca9d: kernel/x86: extend CR4 flags
  
  Change-Id: I4861f6cd61d0daeeb2403d07e703b83cd6a00666
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/3280
  Reviewed-by: Rene Gollent <rene@xxxxxxxxxxx>

                                   [ Jérôme Duval <jerome.duval@xxxxxxxxx> ]

----------------------------------------------------------------------------

2 files changed, 43 insertions(+), 1 deletion(-)
headers/private/kernel/arch/x86/arch_cpu.h | 16 ++++++++++++++-
src/system/kernel/arch/x86/arch_cpu.cpp    | 28 ++++++++++++++++++++++++++

############################################################################

Commit:      011fd524a1038a9f4979c62667a8ce913160bb44
URL:         https://git.haiku-os.org/haiku/commit/?id=011fd524a103
Author:      Jérôme Duval <jerome.duval@xxxxxxxxx>
Date:        Sat Sep 26 11:48:52 2020 UTC

kernel/x86: dump features 7 ecx

Change-Id: I4c166ceb64c3a472ee2a849beca6ee041ef3af89
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3279
Reviewed-by: Rene Gollent <rene@xxxxxxxxxxx>

----------------------------------------------------------------------------

diff --git a/src/system/kernel/arch/x86/arch_cpu.cpp 
b/src/system/kernel/arch/x86/arch_cpu.cpp
index c4ce6fc6c0..692fd1cc46 100644
--- a/src/system/kernel/arch/x86/arch_cpu.cpp
+++ b/src/system/kernel/arch/x86/arch_cpu.cpp
@@ -584,6 +584,34 @@ dump_feature_string(int currentCPU, cpu_ent* cpu)
                strlcat(features, "avx512bw ", sizeof(features));
        if (cpu->arch.feature[FEATURE_7_EBX] & IA32_FEATURE_AVX512VI)
                strlcat(features, "avx512vi ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_AVX512VMBI)
+               strlcat(features, "avx512vmbi ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_UMIP)
+               strlcat(features, "umip ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_PKU)
+               strlcat(features, "pku ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_OSPKE)
+               strlcat(features, "ospke ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_AVX512VMBI2)
+               strlcat(features, "avx512vmbi2 ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_GFNI)
+               strlcat(features, "gfni ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_VAES)
+               strlcat(features, "vaes ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_VPCLMULQDQ)
+               strlcat(features, "vpclmulqdq ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_AVX512_VNNI)
+               strlcat(features, "avx512vnni ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_AVX512_BITALG)
+               strlcat(features, "avx512bitalg ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_AVX512_VPOPCNTDQ)
+               strlcat(features, "avx512vpopcntdq ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_LA57)
+               strlcat(features, "la57 ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_RDPID)
+               strlcat(features, "rdpid ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_7_ECX] & IA32_FEATURE_SGX_LC)
+               strlcat(features, "sgx_lc ", sizeof(features));
        if (cpu->arch.feature[FEATURE_7_EDX] & IA32_FEATURE_IBRS)
                strlcat(features, "ibrs ", sizeof(features));
        if (cpu->arch.feature[FEATURE_7_EDX] & IA32_FEATURE_STIBP)

############################################################################

Revision:    hrev54610
Commit:      64331e96ca9d657f8823e5f870721c8f7770da1f
URL:         https://git.haiku-os.org/haiku/commit/?id=64331e96ca9d
Author:      Jérôme Duval <jerome.duval@xxxxxxxxx>
Date:        Sat Sep 26 13:01:14 2020 UTC

kernel/x86: extend CR4 flags

Change-Id: I4861f6cd61d0daeeb2403d07e703b83cd6a00666
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3280
Reviewed-by: Rene Gollent <rene@xxxxxxxxxxx>

----------------------------------------------------------------------------

diff --git a/headers/private/kernel/arch/x86/arch_cpu.h 
b/headers/private/kernel/arch/x86/arch_cpu.h
index 3974a995eb..2ba90b0551 100644
--- a/headers/private/kernel/arch/x86/arch_cpu.h
+++ b/headers/private/kernel/arch/x86/arch_cpu.h
@@ -391,15 +391,29 @@
 #define CR0_FPU_EMULATION              (1UL << 2)
 #define CR0_MONITOR_FPU                        (1UL << 1)
 
-// cr4 flags
+// Control Register CR4 flags §2.5
+// 
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf
+#define IA32_CR4_VME                   (1UL << 0)
+#define IA32_CR4_PVI                   (1UL << 1)
+#define IA32_CR4_TSD                   (1UL << 2)
+#define IA32_CR4_DE                            (1UL << 3)
+#define IA32_CR4_PSE                   (1UL << 4)
 #define IA32_CR4_PAE                   (1UL << 5)
 #define IA32_CR4_MCE                   (1UL << 6)
 #define IA32_CR4_GLOBAL_PAGES  (1UL << 7)
+#define IA32_CR4_PCE                   (1UL << 8)
 #define CR4_OS_FXSR                            (1UL << 9)
 #define CR4_OS_XMM_EXCEPTION   (1UL << 10)
+#define IA32_CR4_UMIP                  (1UL << 11)
+#define IA32_CR4_LA57                  (1UL << 12)
+#define IA32_CR4_VMXE                  (1UL << 13)
+#define IA32_CR4_SMXE                  (1UL << 14)
+#define IA32_CR4_FSGSBASE              (1UL << 16)
+#define IA32_CR4_PCIDE                 (1UL << 17)
 #define IA32_CR4_OSXSAVE               (1UL << 18)
 #define IA32_CR4_SMEP                  (1UL << 20)
 #define IA32_CR4_SMAP                  (1UL << 21)
+#define IA32_CR4_PKE                   (1UL << 22)
 
 // Extended Control Register XCR0 flags §13.3
 // 
https://software.intel.com/content/dam/develop/public/us/en/documents/253665-sdm-vol-1.pdf


Other related posts:

  • » [haiku-commits] haiku: hrev54610 - src/system/kernel/arch/x86 headers/private/kernel/arch/x86 - Jérôme Duval