Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit adbd050

Browse files
committed
biosdecode: Decode Intel Multiprocessor entry point
Decode the entry point defined in the Intel Multiprocessor specification.
1 parent 12fbde9 commit adbd050

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

‎CHANGELOG‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
2017年01月20日 Jean Delvare <jdelvare@suse.de>
2+
3+
* biosdecode.c: Decode the entry point defined in the Intel
4+
Multiprocessor specification.
5+
16
2017年01月20日 Jean Delvare <jdelvare@suse.de>
27

38
* dmidecode.c: Only decode one DMI table.

‎biosdecode.c‎

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* BIOS Decode
33
*
44
* Copyright (C) 2000-2002 Alan Cox <alan@redhat.com>
5-
* Copyright (C) 2002-2015 Jean Delvare <jdelvare@suse.de>
5+
* Copyright (C) 2002-2017 Jean Delvare <jdelvare@suse.de>
66
*
77
* This program is free software; you can redistribute it and/or modify
88
* it under the terms of the GNU General Public License as published by
@@ -52,6 +52,9 @@
5252
* - Fujitsu application panel technical details
5353
* As of July 23rd, 2004
5454
* http://apanel.sourceforge.net/tech.php
55+
* - Intel Multiprocessor Specification
56+
* Version 1.4
57+
* http://www.intel.com/design/archives/processors/pro/docs/242016.htm
5558
*/
5659

5760
#include <stdio.h>
@@ -545,6 +548,34 @@ static int fjkeyinf_decode(const u8 *p, size_t len)
545548
return 1;
546549
}
547550

551+
/*
552+
* Intel Multiprocessor
553+
*/
554+
555+
static size_t mp_length(const u8 *p)
556+
{
557+
return 16 * p[8];
558+
}
559+
560+
static int mp_decode(const u8 *p, size_t len)
561+
{
562+
if (!checksum(p, len))
563+
return 0;
564+
565+
printf("Intel Multiprocessor present.\n");
566+
printf("\tSpecification Revision: %s\n",
567+
p[9] == 0x01 ? "1.1" : p[9] == 0x04 ? "1.4" : "Invalid");
568+
if (p[11])
569+
printf("\tDefault Configuration: #%d\n", p[11]);
570+
else
571+
printf("\tConfiguration Table Address: 0x%08X\n",
572+
DWORD(p + 4));
573+
printf("\tMode: %s\n", p[12] & (1 << 7) ?
574+
"IMCR and PIC" : "Virtual Wire");
575+
576+
return 1;
577+
}
578+
548579
/*
549580
* Main
550581
*/
@@ -562,6 +593,7 @@ static struct bios_entry bios_entries[] = {
562593
{ "32OS", 0, 0xE0000, 0xFFFFF, compaq_length, compaq_decode },
563594
{ "252円125円VPD", 0, 0xF0000, 0xFFFFF, vpd_length, vpd_decode },
564595
{ "FJKEYINF", 0, 0xF0000, 0xFFFFF, fjkeyinf_length, fjkeyinf_decode },
596+
{ "_MP_", 0, 0xE0000, 0xFFFFF, mp_length, mp_decode },
565597
{ NULL, 0, 0, 0, NULL, NULL }
566598
};
567599

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /