588 static ByteSize ymm_save_offset() { return byte_offset_of(CpuidInfo, ymm_save); }
589 static ByteSize zmm_save_offset() { return byte_offset_of(CpuidInfo, zmm_save); }
590
591 // The value used to check ymm register after signal handle
592 static int ymm_test_value() { return 0xCAFEBABE; }
593
594 static void get_cpu_info_wrapper();
595 static void set_cpuinfo_segv_addr(address pc) { _cpuinfo_segv_addr = pc; }
596 static bool is_cpuinfo_segv_addr(address pc) { return _cpuinfo_segv_addr == pc; }
597 static void set_cpuinfo_cont_addr(address pc) { _cpuinfo_cont_addr = pc; }
598 static address cpuinfo_cont_addr() { return _cpuinfo_cont_addr; }
599
600 static void clean_cpuFeatures() { _cpuFeatures = 0; }
601 static void set_avx_cpuFeatures() { _cpuFeatures = (CPU_SSE | CPU_SSE2 | CPU_AVX); }
602 static void set_evex_cpuFeatures() { _cpuFeatures = (CPU_AVX512F | CPU_SSE | CPU_SSE2 ); }
603
604
605 // Initialization
606 static void initialize();
607
608 static void vm_init_before_ergo() {};
609
610 // Override Abstract_VM_Version implementation
611 static bool use_biased_locking();
612
613 // Asserts
614 static void assert_is_initialized() {
615 assert(_cpuid_info.std_cpuid1_eax.bits.family != 0, "VM_Version not initialized");
616 }
617
618 //
619 // Processor family:
620 // 3 - 386
621 // 4 - 486
622 // 5 - Pentium
623 // 6 - PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
624 // Pentium M, Core Solo, Core Duo, Core2 Duo
625 // family 6 model: 9, 13, 14, 15
626 // 0x0f - Pentium 4, Opteron
627 //
628 // Note: The cpu family should be used to select between
629 // instruction sequences which are valid on all Intel
|
588 static ByteSize ymm_save_offset() { return byte_offset_of(CpuidInfo, ymm_save); }
589 static ByteSize zmm_save_offset() { return byte_offset_of(CpuidInfo, zmm_save); }
590
591 // The value used to check ymm register after signal handle
592 static int ymm_test_value() { return 0xCAFEBABE; }
593
594 static void get_cpu_info_wrapper();
595 static void set_cpuinfo_segv_addr(address pc) { _cpuinfo_segv_addr = pc; }
596 static bool is_cpuinfo_segv_addr(address pc) { return _cpuinfo_segv_addr == pc; }
597 static void set_cpuinfo_cont_addr(address pc) { _cpuinfo_cont_addr = pc; }
598 static address cpuinfo_cont_addr() { return _cpuinfo_cont_addr; }
599
600 static void clean_cpuFeatures() { _cpuFeatures = 0; }
601 static void set_avx_cpuFeatures() { _cpuFeatures = (CPU_SSE | CPU_SSE2 | CPU_AVX); }
602 static void set_evex_cpuFeatures() { _cpuFeatures = (CPU_AVX512F | CPU_SSE | CPU_SSE2 ); }
603
604
605 // Initialization
606 static void initialize();
607
608 // Override Abstract_VM_Version implementation
609 static bool use_biased_locking();
610
611 // Asserts
612 static void assert_is_initialized() {
613 assert(_cpuid_info.std_cpuid1_eax.bits.family != 0, "VM_Version not initialized");
614 }
615
616 //
617 // Processor family:
618 // 3 - 386
619 // 4 - 486
620 // 5 - Pentium
621 // 6 - PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
622 // Pentium M, Core Solo, Core Duo, Core2 Duo
623 // family 6 model: 9, 13, 14, 15
624 // 0x0f - Pentium 4, Opteron
625 //
626 // Note: The cpu family should be used to select between
627 // instruction sequences which are valid on all Intel
|