Commit | Line | Data |
---|---|---|
c8fe38ae MD |
1 | /*- |
2 | * Copyright (c) 1997 Michael Smith | |
3 | * Copyright (c) 1998 Jonathan Lemon | |
4 | * Copyright (c) 2008 The DragonFly Project. | |
5 | * All rights reserved. | |
6 | * | |
7 | * Redistribution and use in source and binary forms, with or without | |
8 | * modification, are permitted provided that the following conditions | |
9 | * are met: | |
10 | * 1. Redistributions of source code must retain the above copyright | |
11 | * notice, this list of conditions and the following disclaimer. | |
12 | * 2. Redistributions in binary form must reproduce the above copyright | |
13 | * notice, this list of conditions and the following disclaimer in the | |
14 | * documentation and/or other materials provided with the distribution. | |
15 | * | |
16 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | |
17 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | |
20 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
21 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
22 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
23 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
24 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
25 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
26 | * SUCH DAMAGE. | |
27 | * | |
28 | * $FreeBSD$ | |
29 | * $DragonFly: src/sys/platform/pc64/include/pc/bios.h,v 1.1 2008/08/29 17:07:18 dillon Exp $ | |
30 | */ | |
31 | ||
32 | #ifndef _MACHINE_PC_BIOS_H_ | |
33 | #define _MACHINE_PC_BIOS_H_ | |
34 | ||
35 | extern u_int32_t bios_sigsearch(u_int32_t start, u_char *sig, int siglen, | |
36 | int paralen, int sigofs); | |
37 | ||
38 | #define BIOS_PADDRTOVADDR(x) ((x) + KERNBASE) | |
39 | #define BIOS_VADDRTOPADDR(x) ((x) - KERNBASE) | |
40 | ||
41 | /* | |
42 | * Int 15:E820 'SMAP' structure | |
43 | */ | |
44 | ||
45 | #define SMAP_SIG 0x534D4150 /* 'SMAP' */ | |
46 | ||
47 | #define SMAP_TYPE_MEMORY 1 | |
48 | #define SMAP_TYPE_RESERVED 2 | |
49 | #define SMAP_TYPE_ACPI_RECLAIM 3 | |
50 | #define SMAP_TYPE_ACPI_NVS 4 | |
51 | #define SMAP_TYPE_ACPI_ERROR 5 | |
52 | ||
53 | struct bios_smap { | |
54 | u_int64_t base; | |
55 | u_int64_t length; | |
56 | u_int32_t type; | |
57 | } __packed; | |
58 | ||
59 | struct bios_oem_signature { | |
60 | char * anchor; /* search anchor string in BIOS memory */ | |
61 | size_t offset; /* offset from anchor (may be negative) */ | |
62 | size_t totlen; /* total length of BIOS string to copy */ | |
63 | } __packed; | |
64 | struct bios_oem_range { | |
65 | u_int from; /* shouldn't be below 0xe0000 */ | |
66 | u_int to; /* shouldn't be above 0xfffff */ | |
67 | } __packed; | |
68 | struct bios_oem { | |
69 | struct bios_oem_range range; | |
70 | struct bios_oem_signature signature[]; | |
71 | } __packed; | |
72 | ||
73 | extern int | |
74 | bios_oem_strings(struct bios_oem *oem, u_char *buffer, size_t maxlen); | |
75 | ||
53a374c1 SW |
76 | /* |
77 | * System Management BIOS | |
78 | */ | |
79 | #define SMBIOS_START 0xf0000 | |
80 | #define SMBIOS_STEP 0x10 | |
81 | #define SMBIOS_OFF 0 | |
82 | #define SMBIOS_LEN 4 | |
83 | #define SMBIOS_SIG "_SM_" | |
84 | ||
85 | struct smbios_eps { | |
86 | uint8_t anchor_string[4]; /* '_SM_' */ | |
87 | uint8_t checksum; | |
88 | uint8_t length; | |
89 | uint8_t major_version; | |
90 | uint8_t minor_version; | |
91 | uint16_t maximum_structure_size; | |
92 | uint8_t entry_point_revision; | |
93 | uint8_t formatted_area[5]; | |
94 | uint8_t intermediate_anchor_string[5]; /* '_DMI_' */ | |
95 | uint8_t intermediate_checksum; | |
96 | uint16_t structure_table_length; | |
97 | uint32_t structure_table_address; | |
98 | uint16_t number_structures; | |
99 | uint8_t BCD_revision; | |
100 | }; | |
101 | ||
102 | struct smbios_structure_header { | |
103 | uint8_t type; | |
104 | uint8_t length; | |
105 | uint16_t handle; | |
106 | }; | |
c8fe38ae MD |
107 | |
108 | #endif /* _MACHINE_PC_BIOS_H_ */ |