Lines Matching +full:no +full:- +full:unaligned +full:- +full:direct +full:- +full:access

1 /*-
2 * Copyright (c) 2005-2009 Jung-uk Kim <jkim@FreeBSD.org>
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
49 * 5.2.1 SMBIOS 2.1 (32-bit) Entry Point
51 * "On non-UEFI systems, the 32-bit SMBIOS Entry Point structure, can be
52 * located by application software by searching for the anchor-string on
53 * paragraph (16-byte) boundaries within the physical memory address
57 * On UEFI-based systems, the SMBIOS Entry Point structure can be located by
59 * (SMBIOS_TABLE_GUID, {EB9D2D31-2D88-11D3-9A16-0090273FC14D}) and using the
70 * 5.2.2 SMBIOS 860 3.0 (64-bit) Entry Point
72 * "On non-UEFI systems, the 64-bit SMBIOS Entry Point structure can be located
73 * by application software by searching for the anchor-string on paragraph
74 * (16-byte) boundaries within the physical memory address range 000F0000h to
77 * On UEFI-based systems, the SMBIOS Entry Point structure can be located by
79 * (SMBIOS3_TABLE_GUID, {F2FD1544-9794-4A2C-992E-E5BBCF20E394}) and using the
96 * little-endian ordering convention...
99 * We use memcpy to avoid unaligned access to memory. To normal memory, this is
101 * on aarch64 doesn't allow unaligned access. leXdec and friends can't be used
102 * because those can optimize to an unaligned load (which often is fine, but not
177 /* Search on 16-byte boundaries. */ in smbios_sigsearch()
179 /* v3.0, 64-bit Entry point */ in smbios_sigsearch()
180 if (strncmp(cp, SMBIOS3_SIG, sizeof(SMBIOS3_SIG) - 1) == 0 && in smbios_sigsearch()
196 /* Can't access it with 32-bit addressing. */ in smbios_sigsearch()
203 /* v2.1, 32-bit Entry point */ in smbios_sigsearch()
204 if (strncmp(cp, SMBIOS_SIG, sizeof(SMBIOS_SIG) - 1) == 0 && in smbios_sigsearch()
210 * it right now as we favor the 64-bit one if present. in smbios_sigsearch()
278 * little-endian byte encoding for the first three fields: in smbios_setuuid()
284 * unless SMBIOS version is 2.6+ or little-endian is forced. in smbios_setuuid()
303 "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", in smbios_setuuid()
358 return ("Space-saving"); in smbios_parse_chassis_type()
374 return ("Sealed-case PC"); in smbios_parse_chassis_type()
376 return ("Multi-system chassis"); in smbios_parse_chassis_type()
470 * 1 - CPU Socket Populated in smbios_parse_table()
471 * 0 - CPU Socket Unpopulated in smbios_parse_table()
474 * 0h - Unknown in smbios_parse_table()
475 * 1h - CPU Enabled in smbios_parse_table()
476 * 2h - CPU Disabled by User via BIOS Setup in smbios_parse_table()
477 * 3h - CPU Disabled by BIOS (POST Error) in smbios_parse_table()
478 * 4h - CPU is Idle, waiting to be enabled in smbios_parse_table()
479 * 5-6h - Reserved in smbios_parse_table()
480 * 7h - Other in smbios_parse_table()
494 * 1 - Double-bank connection in smbios_parse_table()
495 * 0 - Single-bank connection in smbios_parse_table()
497 * 7Dh - Not determinable (Installed Size only) in smbios_parse_table()
498 * 7Eh - Module is installed, but no memory in smbios_parse_table()
500 * 7Fh - Not installed in smbios_parse_table()
512 * 1 - Value is in kilobytes units in smbios_parse_table()
513 * 0 - Value is in megabytes units in smbios_parse_table()
522 case SMBIOS_EOT_TYPE: /* 3.3.42 End-of-Table (Type 127) */ in smbios_parse_table()
587 /* Not present in V3, set it to the maximum value (no limit). */ in smbios_probe()
588 smbios.count = -1; in smbios_probe()
590 * No BCD revision in V3, we'll determine the version thanks to in smbios_probe()
601 /* No. of SMBIOS Structures */ in smbios_probe()
655 "v3 (64-bit)" : "v2.1 (32-bit)", 1); in smbios_detect()
688 * This routine is called only from non-EFI loaders on determining the in smbios_match()