[syslinux] Extending dmitest to check for Long Mode (aka 64 versus 32 bit)

Doug Scoular dscoular at gmail.com
Mon Aug 28 15:19:14 PDT 2006

Hi Erwan,

First off, many thanks for your wonderful addition to syslinux:
dmitest.c32 and another thankyou to hpa for it's inclusion.

I need to ask if you are missing a couple of definitions in
dmi_processor.h, specifically, the "long mode" flag. I
need to use this flag to determine whether a machine is
64-bit capable or not.

There is a great web page explaining the "long mode" flag


>From the web site I see the following:

"How do I detect if the CPU is 64 bits ? You can find that out by
checking CPUID. All AMD64 compliant processors have the
longmode-capable-bit turned on in the extended feature flags (bit 29)
in EDX, after calling CPUID with EAX=0x80000001. "

Unfortunately, my understanding of what EDX and EAX means is zero... but
looking through your code I suspect that this may be the missing entry from
the cpu_flags_strings table in dmi_processor.h:

NULL, /* 30 */

In the Linux kernel I see that /proc/cpuinfo is determined through the
/usr/include/asm/cpufeature.h include as:

#define X86_FEATURE_LM          (1*32+29) /* Long Mode (x86-64) */

Would I simply need to Change the NULL entry to a string in
cpu_flags_strings table, add a bool in s_cpu_flags and then
dmi.c would automagically set the boolean correctly ?

I could then modify dmitest to check for Long Mode and achieve
my goal.

Any help hugely appreciated!




The big print giveth and the small print taketh away.

More information about the Syslinux mailing list