136
submitted 5 months ago by Sunshine@lemmy.ca to c/linux@programming.dev
you are viewing a single comment's thread
view the rest of the comments
[-] SteveTech@programming.dev 16 points 5 months ago

I couldn't find a hard answer to whether this supports EPYC only, or Ryzen too; so I put together this script to read the CPUID to detect for INVLPGB support according to the AMD64 Programmer’s Manual, and my 7800X3D does not support INVLPGB.

(Let me know if I've made an error though!)

Code

#include <stdio.h>
#include <stdint.h>

int main() {
    uint32_t eax, ebx, ecx, edx;

    eax = 0x80000008;

    __asm__ __volatile__ (
        "cpuid"
        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
        : "a" (eax)
    );

    printf("EBX: 0x%x\n", ebx);

    if (ebx & (1 << 3)) {
        printf("CPU supports INVLPGB\n");
    } else {
        printf("CPU does not support INVLPGB\n");
    }

    return 0;
}

this post was submitted on 22 Dec 2024
136 points (98.6% liked)

Linux

7897 readers
573 users here now

A community for everything relating to the GNU/Linux operating system

Also check out:

Original icon base courtesy of lewing@isc.tamu.edu and The GIMP

founded 2 years ago
MODERATORS