commit abaa01ee9516bee7e4e872d9d01c3326f344fdb4 Author: Deomid "rojer" Ryabkov Date: Mon Aug 19 05:45:15 2019 -0700 Use larger units for memory device and BIOS size. So, 8 MB instead of 8192 kB, 8 GB instead of 8192 MB. Same principle as in http://git.savannah.nongnu.org/cgit/dmidecode.git/commit/?id=c43afb47fcbadabe2655fe7863a1e2ea9af1446c applied to more fields. diff --git a/dmidecode.c b/dmidecode.c index 21bfd65..ec4ac5b 100644 --- a/dmidecode.c +++ b/dmidecode.c @@ -317,10 +317,12 @@ static void dmi_bios_rom_size(u8 code1, u16 code2) "MB", "GB", out_of_spec, out_of_spec }; - if (code1 != 0xFF) - printf(" %u kB", (code1 + 1) << 6); - else + if (code1 != 0xFF) { + u64 s = { .l = (code1 + 1) << 6 }; + dmi_print_memory_size(s, 1); + } else { printf(" %u %s", code2 & 0x3FFF, unit[code2 >> 14]); + } } static void dmi_bios_characteristics(u64 code, const char *prefix) @@ -2370,12 +2372,10 @@ static void dmi_memory_device_size(u16 code) printf(" No Module Installed"); else if (code == 0xFFFF) printf(" Unknown"); - else - { - if (code & 0x8000) - printf(" %u kB", code & 0x7FFF); - else - printf(" %u MB", code); + else { + u64 s = { .l = code & 0x7FFF }; + if ((code & 0x8000) == 0) s.l <<= 10; + dmi_print_memory_size(s, 1); } }