Searched hist:"6 c03ba71f8eb3b7b9fe56d325a6a66123549aba5" (Results 1 – 3 of 3) sorted by relevance
/freebsd/sys/arm64/include/ |
H A D | pcpu.h | diff 6c03ba71f8eb3b7b9fe56d325a6a66123549aba5 Thu Jul 09 13:32:29 CEST 2015 Zbigniew Bodek <zbb@FreeBSD.org> Rework CPU identification on ARM64
This commit reworks the code responsible for identification of the CPUs during runtime. It is necessary to provide a way for workarounds and erratums to be applied only for certain HW versions.
The copy of MIDR is now stored in pcpu to provide a fast and convenient way for assambly code to read it (pcpu is used quite often so there is a chance it's inside the cache). The MIDR is also better way of identification than using user-friendly cpu_desc structure, because it can be compiled into comparision of single u32 with only one access to the memory - this is crucial for some erratums which are called from performance-critical places.
Changes in cpu_identify makes this function safe to be called on non-boot CPUs.
New function CPU_MATCH was implemented which returns boolean value based on mathing masked MIDR with chip identification. Example of usage:
printf("is thunder: %d\n", CPU_MATCH(CPU_IMPL_MASK | CPU_PART_MASK, CPU_IMPL_CAVIUM, CPU_PART_THUNDER, 0, 0)); printf("is generic: %d\n", CPU_MATCH(CPU_IMPL_MASK | CPU_PART_MASK, CPU_IMPL_ARM, CPU_PART_FOUNDATION, 0, 0));
Reviewed by: andrew Obtained from: Semihalf Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D3030
|
H A D | cpu.h | diff 6c03ba71f8eb3b7b9fe56d325a6a66123549aba5 Thu Jul 09 13:32:29 CEST 2015 Zbigniew Bodek <zbb@FreeBSD.org> Rework CPU identification on ARM64
This commit reworks the code responsible for identification of the CPUs during runtime. It is necessary to provide a way for workarounds and erratums to be applied only for certain HW versions.
The copy of MIDR is now stored in pcpu to provide a fast and convenient way for assambly code to read it (pcpu is used quite often so there is a chance it's inside the cache). The MIDR is also better way of identification than using user-friendly cpu_desc structure, because it can be compiled into comparision of single u32 with only one access to the memory - this is crucial for some erratums which are called from performance-critical places.
Changes in cpu_identify makes this function safe to be called on non-boot CPUs.
New function CPU_MATCH was implemented which returns boolean value based on mathing masked MIDR with chip identification. Example of usage:
printf("is thunder: %d\n", CPU_MATCH(CPU_IMPL_MASK | CPU_PART_MASK, CPU_IMPL_CAVIUM, CPU_PART_THUNDER, 0, 0)); printf("is generic: %d\n", CPU_MATCH(CPU_IMPL_MASK | CPU_PART_MASK, CPU_IMPL_ARM, CPU_PART_FOUNDATION, 0, 0));
Reviewed by: andrew Obtained from: Semihalf Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D3030
|
/freebsd/sys/arm64/arm64/ |
H A D | identcpu.c | diff 6c03ba71f8eb3b7b9fe56d325a6a66123549aba5 Thu Jul 09 13:32:29 CEST 2015 Zbigniew Bodek <zbb@FreeBSD.org> Rework CPU identification on ARM64
This commit reworks the code responsible for identification of the CPUs during runtime. It is necessary to provide a way for workarounds and erratums to be applied only for certain HW versions.
The copy of MIDR is now stored in pcpu to provide a fast and convenient way for assambly code to read it (pcpu is used quite often so there is a chance it's inside the cache). The MIDR is also better way of identification than using user-friendly cpu_desc structure, because it can be compiled into comparision of single u32 with only one access to the memory - this is crucial for some erratums which are called from performance-critical places.
Changes in cpu_identify makes this function safe to be called on non-boot CPUs.
New function CPU_MATCH was implemented which returns boolean value based on mathing masked MIDR with chip identification. Example of usage:
printf("is thunder: %d\n", CPU_MATCH(CPU_IMPL_MASK | CPU_PART_MASK, CPU_IMPL_CAVIUM, CPU_PART_THUNDER, 0, 0)); printf("is generic: %d\n", CPU_MATCH(CPU_IMPL_MASK | CPU_PART_MASK, CPU_IMPL_ARM, CPU_PART_FOUNDATION, 0, 0));
Reviewed by: andrew Obtained from: Semihalf Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D3030
|