sconfig: Add SMBIOS type 9 entries
Add the new field 'smbios_slot_desc', which takes 2 to 4 arguments. The field is valid for PCI devices and only compiled if SMBIOS table generation is enabled. smbios_slot_desc arguments: 1. slot type 2. slot lenth 3. slot designation (optional) 4. slot data width (optional) Example: device pci 1c.1 on smbios_slot_desc "21" "3" "MINI-PCI-FULL" "8" end # PCIe Port #2 Integrated Wireless LAN Tested on Lenovo T520. Change-Id: If95aae3c322d3da47637613b9a872ba1f7af9080 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32307 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
This commit is contained in:
parent
1a93058448
commit
ac24d3c311
|
@ -141,6 +141,12 @@ struct device {
|
|||
#if !DEVTREE_EARLY
|
||||
struct chip_operations *chip_ops;
|
||||
const char *name;
|
||||
#if CONFIG(GENERATE_SMBIOS_TABLES)
|
||||
u8 smbios_slot_type;
|
||||
u8 smbios_slot_data_width;
|
||||
u8 smbios_slot_length;
|
||||
const char *smbios_slot_designation;
|
||||
#endif
|
||||
#endif
|
||||
DEVTREE_CONST void *chip_info;
|
||||
};
|
||||
|
|
|
@ -168,7 +168,7 @@ extern FILE *yyin, *yyout;
|
|||
do \
|
||||
{ \
|
||||
/* Undo effects of setting up yytext. */ \
|
||||
int yyless_macro_arg = (n); \
|
||||
yy_size_t yyless_macro_arg = (n); \
|
||||
YY_LESS_LINENO(yyless_macro_arg);\
|
||||
*yy_cp = (yy_hold_char); \
|
||||
YY_RESTORE_YY_MORE_OFFSET \
|
||||
|
@ -358,8 +358,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg );
|
|||
*yy_cp = '\0'; \
|
||||
(yy_c_buf_p) = yy_cp;
|
||||
|
||||
#define YY_NUM_RULES 37
|
||||
#define YY_END_OF_BUFFER 38
|
||||
#define YY_NUM_RULES 38
|
||||
#define YY_END_OF_BUFFER 39
|
||||
/* This struct is not used in this scanner,
|
||||
but its presence is necessary. */
|
||||
struct yy_trans_info
|
||||
|
@ -367,24 +367,25 @@ struct yy_trans_info
|
|||
flex_int32_t yy_verify;
|
||||
flex_int32_t yy_nxt;
|
||||
};
|
||||
static yyconst flex_int16_t yy_accept[145] =
|
||||
static yyconst flex_int16_t yy_accept[160] =
|
||||
{ 0,
|
||||
0, 0, 38, 36, 1, 3, 36, 36, 36, 31,
|
||||
31, 29, 32, 36, 32, 32, 32, 36, 36, 36,
|
||||
36, 36, 36, 36, 36, 36, 36, 36, 1, 3,
|
||||
36, 0, 36, 36, 0, 2, 31, 32, 36, 36,
|
||||
36, 36, 32, 36, 36, 36, 36, 36, 36, 36,
|
||||
24, 36, 36, 36, 36, 7, 36, 36, 36, 36,
|
||||
36, 36, 35, 35, 36, 0, 30, 36, 36, 16,
|
||||
36, 36, 23, 28, 36, 36, 13, 36, 36, 22,
|
||||
36, 36, 8, 10, 12, 36, 20, 36, 21, 36,
|
||||
0, 33, 4, 36, 36, 36, 36, 36, 36, 36,
|
||||
0, 0, 39, 37, 1, 3, 37, 37, 37, 32,
|
||||
32, 30, 33, 37, 33, 33, 33, 37, 37, 37,
|
||||
37, 37, 37, 37, 37, 37, 37, 37, 1, 3,
|
||||
37, 0, 37, 37, 0, 2, 32, 33, 37, 37,
|
||||
37, 37, 33, 37, 37, 37, 37, 37, 37, 37,
|
||||
24, 37, 37, 37, 37, 7, 37, 37, 37, 37,
|
||||
37, 37, 37, 36, 36, 37, 0, 31, 37, 37,
|
||||
16, 37, 37, 23, 28, 37, 37, 13, 37, 37,
|
||||
22, 37, 37, 8, 10, 12, 37, 37, 20, 37,
|
||||
21, 37, 0, 34, 4, 37, 37, 37, 37, 37,
|
||||
|
||||
36, 19, 36, 36, 34, 34, 36, 36, 36, 36,
|
||||
36, 36, 36, 14, 36, 36, 36, 5, 17, 36,
|
||||
9, 36, 11, 36, 36, 36, 18, 26, 36, 36,
|
||||
36, 36, 36, 6, 36, 36, 36, 36, 36, 25,
|
||||
36, 15, 27, 0
|
||||
37, 37, 37, 19, 37, 37, 37, 35, 35, 37,
|
||||
37, 37, 37, 37, 37, 37, 14, 37, 37, 37,
|
||||
37, 5, 17, 37, 9, 37, 11, 37, 37, 37,
|
||||
37, 18, 26, 37, 37, 37, 37, 37, 37, 6,
|
||||
37, 37, 37, 37, 37, 37, 37, 25, 37, 37,
|
||||
15, 37, 27, 37, 37, 37, 37, 29, 0
|
||||
} ;
|
||||
|
||||
static yyconst YY_CHAR yy_ec[256] =
|
||||
|
@ -427,110 +428,114 @@ static yyconst YY_CHAR yy_meta[39] =
|
|||
1, 1, 1, 1, 1, 1, 1, 1
|
||||
} ;
|
||||
|
||||
static yyconst flex_uint16_t yy_base[152] =
|
||||
static yyconst flex_uint16_t yy_base[167] =
|
||||
{ 0,
|
||||
0, 0, 212, 0, 209, 213, 207, 37, 41, 38,
|
||||
172, 0, 44, 194, 54, 78, 60, 186, 181, 45,
|
||||
188, 177, 42, 47, 182, 41, 169, 0, 199, 213,
|
||||
77, 195, 87, 91, 196, 213, 0, 88, 104, 183,
|
||||
172, 161, 93, 168, 163, 173, 164, 171, 171, 165,
|
||||
171, 156, 156, 160, 162, 0, 158, 152, 158, 155,
|
||||
161, 160, 0, 213, 101, 172, 0, 165, 145, 158,
|
||||
148, 155, 0, 0, 150, 150, 0, 148, 138, 0,
|
||||
142, 137, 0, 0, 0, 140, 0, 131, 0, 158,
|
||||
157, 0, 0, 142, 141, 134, 126, 136, 124, 130,
|
||||
0, 0, 227, 0, 224, 228, 222, 37, 41, 38,
|
||||
187, 0, 44, 209, 54, 78, 60, 201, 196, 45,
|
||||
203, 192, 42, 47, 197, 62, 184, 0, 214, 228,
|
||||
77, 210, 88, 69, 211, 228, 0, 87, 104, 198,
|
||||
187, 176, 93, 183, 178, 188, 179, 186, 186, 180,
|
||||
186, 171, 171, 175, 177, 0, 173, 167, 173, 177,
|
||||
169, 175, 174, 0, 228, 101, 186, 0, 179, 159,
|
||||
172, 162, 169, 0, 0, 164, 164, 0, 162, 152,
|
||||
0, 156, 151, 0, 0, 0, 154, 153, 0, 144,
|
||||
0, 171, 170, 0, 0, 155, 154, 147, 139, 149,
|
||||
|
||||
135, 0, 120, 114, 0, 213, 125, 129, 121, 123,
|
||||
119, 121, 126, 0, 110, 110, 107, 0, 0, 109,
|
||||
0, 93, 104, 98, 84, 84, 0, 0, 89, 77,
|
||||
87, 71, 66, 0, 64, 62, 50, 47, 33, 0,
|
||||
28, 0, 0, 213, 40, 129, 131, 133, 135, 137,
|
||||
139
|
||||
137, 143, 148, 0, 133, 136, 126, 0, 228, 137,
|
||||
141, 133, 135, 131, 133, 138, 0, 122, 122, 121,
|
||||
118, 0, 0, 133, 0, 117, 134, 128, 132, 113,
|
||||
113, 0, 0, 120, 112, 110, 121, 94, 95, 0,
|
||||
94, 92, 97, 86, 85, 84, 76, 0, 71, 78,
|
||||
0, 67, 0, 61, 55, 32, 29, 0, 228, 40,
|
||||
129, 131, 133, 135, 137, 139
|
||||
} ;
|
||||
|
||||
static yyconst flex_int16_t yy_def[152] =
|
||||
static yyconst flex_int16_t yy_def[167] =
|
||||
{ 0,
|
||||
144, 1, 144, 145, 144, 144, 145, 146, 147, 145,
|
||||
10, 145, 10, 145, 10, 10, 10, 145, 145, 145,
|
||||
145, 145, 145, 145, 145, 145, 145, 145, 144, 144,
|
||||
146, 148, 149, 147, 150, 144, 10, 10, 10, 145,
|
||||
145, 145, 10, 145, 145, 145, 145, 145, 145, 145,
|
||||
145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
|
||||
145, 145, 145, 144, 149, 151, 39, 145, 145, 145,
|
||||
145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
|
||||
145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
|
||||
144, 145, 145, 145, 145, 145, 145, 145, 145, 145,
|
||||
159, 1, 159, 160, 159, 159, 160, 161, 162, 160,
|
||||
10, 160, 10, 160, 10, 10, 10, 160, 160, 160,
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 159, 159,
|
||||
161, 163, 164, 162, 165, 159, 10, 10, 10, 160,
|
||||
160, 160, 10, 160, 160, 160, 160, 160, 160, 160,
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
|
||||
160, 160, 160, 160, 159, 164, 166, 39, 160, 160,
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
|
||||
160, 160, 159, 160, 160, 160, 160, 160, 160, 160,
|
||||
|
||||
145, 145, 145, 145, 145, 144, 145, 145, 145, 145,
|
||||
145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
|
||||
145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
|
||||
145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
|
||||
145, 145, 145, 0, 144, 144, 144, 144, 144, 144,
|
||||
144
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 159, 160,
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
|
||||
160, 160, 160, 160, 160, 160, 160, 160, 0, 159,
|
||||
159, 159, 159, 159, 159, 159
|
||||
} ;
|
||||
|
||||
static yyconst flex_uint16_t yy_nxt[252] =
|
||||
static yyconst flex_uint16_t yy_nxt[267] =
|
||||
{ 0,
|
||||
4, 5, 6, 7, 8, 9, 10, 11, 10, 12,
|
||||
13, 13, 14, 4, 4, 4, 13, 13, 15, 16,
|
||||
17, 13, 18, 19, 20, 21, 22, 4, 23, 24,
|
||||
4, 25, 26, 4, 27, 4, 4, 4, 32, 32,
|
||||
28, 33, 35, 36, 37, 37, 37, 143, 38, 38,
|
||||
28, 33, 35, 36, 37, 37, 37, 158, 38, 38,
|
||||
38, 38, 38, 49, 38, 38, 38, 38, 38, 38,
|
||||
38, 38, 38, 55, 142, 57, 38, 38, 38, 56,
|
||||
60, 141, 50, 51, 58, 61, 52, 41, 32, 32,
|
||||
140, 63, 139, 42, 38, 38, 38, 46, 66, 66,
|
||||
138, 28, 35, 36, 38, 38, 38, 137, 43, 38,
|
||||
38, 38, 38, 55, 157, 57, 38, 38, 38, 56,
|
||||
35, 36, 50, 51, 58, 156, 52, 41, 32, 32,
|
||||
155, 64, 154, 42, 38, 38, 38, 46, 60, 67,
|
||||
67, 61, 28, 38, 38, 38, 62, 153, 43, 38,
|
||||
|
||||
38, 38, 66, 66, 136, 90, 44, 135, 134, 45,
|
||||
67, 67, 67, 133, 67, 67, 132, 131, 130, 129,
|
||||
67, 67, 67, 67, 67, 67, 128, 127, 71, 31,
|
||||
31, 34, 34, 32, 32, 65, 65, 35, 35, 66,
|
||||
66, 126, 125, 124, 123, 122, 121, 120, 119, 118,
|
||||
117, 116, 115, 114, 113, 112, 111, 110, 109, 108,
|
||||
107, 106, 105, 104, 103, 102, 101, 100, 99, 98,
|
||||
97, 96, 95, 94, 93, 92, 91, 89, 88, 87,
|
||||
86, 85, 84, 83, 82, 81, 80, 79, 78, 77,
|
||||
76, 75, 74, 73, 72, 70, 69, 68, 36, 64,
|
||||
38, 38, 67, 67, 152, 92, 44, 151, 150, 45,
|
||||
68, 68, 68, 149, 68, 68, 148, 147, 146, 145,
|
||||
68, 68, 68, 68, 68, 68, 144, 143, 72, 31,
|
||||
31, 34, 34, 32, 32, 66, 66, 35, 35, 67,
|
||||
67, 142, 141, 140, 139, 138, 137, 136, 135, 134,
|
||||
133, 132, 131, 130, 129, 128, 127, 126, 125, 124,
|
||||
123, 122, 121, 120, 119, 118, 117, 116, 115, 114,
|
||||
113, 112, 111, 110, 109, 108, 107, 106, 105, 104,
|
||||
103, 102, 101, 100, 99, 98, 97, 96, 95, 94,
|
||||
93, 91, 90, 89, 88, 87, 86, 85, 84, 83,
|
||||
|
||||
29, 62, 59, 54, 53, 48, 47, 40, 39, 30,
|
||||
29, 144, 3, 144, 144, 144, 144, 144, 144, 144,
|
||||
144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
|
||||
144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
|
||||
144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
|
||||
144
|
||||
82, 81, 80, 79, 78, 77, 76, 75, 74, 73,
|
||||
71, 70, 69, 36, 65, 29, 63, 59, 54, 53,
|
||||
48, 47, 40, 39, 30, 29, 159, 3, 159, 159,
|
||||
159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
|
||||
159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
|
||||
159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
|
||||
159, 159, 159, 159, 159, 159
|
||||
} ;
|
||||
|
||||
static yyconst flex_int16_t yy_chk[252] =
|
||||
static yyconst flex_int16_t yy_chk[267] =
|
||||
{ 0,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 8, 8,
|
||||
145, 8, 9, 9, 10, 10, 10, 141, 10, 10,
|
||||
160, 8, 9, 9, 10, 10, 10, 157, 10, 10,
|
||||
13, 13, 13, 20, 10, 10, 10, 10, 10, 10,
|
||||
15, 15, 15, 23, 139, 24, 17, 17, 17, 23,
|
||||
26, 138, 20, 20, 24, 26, 20, 15, 31, 31,
|
||||
137, 31, 136, 15, 16, 16, 16, 17, 33, 33,
|
||||
135, 33, 34, 34, 38, 38, 38, 133, 16, 43,
|
||||
15, 15, 15, 23, 156, 24, 17, 17, 17, 23,
|
||||
34, 34, 20, 20, 24, 155, 20, 15, 31, 31,
|
||||
154, 31, 152, 15, 16, 16, 16, 17, 26, 33,
|
||||
33, 26, 33, 38, 38, 38, 26, 150, 16, 43,
|
||||
|
||||
43, 43, 65, 65, 132, 65, 16, 131, 130, 16,
|
||||
39, 39, 39, 129, 39, 39, 126, 125, 124, 123,
|
||||
39, 39, 39, 39, 39, 39, 122, 120, 43, 146,
|
||||
146, 147, 147, 148, 148, 149, 149, 150, 150, 151,
|
||||
151, 117, 116, 115, 113, 112, 111, 110, 109, 108,
|
||||
107, 104, 103, 101, 100, 99, 98, 97, 96, 95,
|
||||
94, 91, 90, 88, 86, 82, 81, 79, 78, 76,
|
||||
75, 72, 71, 70, 69, 68, 66, 62, 61, 60,
|
||||
59, 58, 57, 55, 54, 53, 52, 51, 50, 49,
|
||||
48, 47, 46, 45, 44, 42, 41, 40, 35, 32,
|
||||
43, 43, 66, 66, 149, 66, 16, 147, 146, 16,
|
||||
39, 39, 39, 145, 39, 39, 144, 143, 142, 141,
|
||||
39, 39, 39, 39, 39, 39, 139, 138, 43, 161,
|
||||
161, 162, 162, 163, 163, 164, 164, 165, 165, 166,
|
||||
166, 137, 136, 135, 134, 131, 130, 129, 128, 127,
|
||||
126, 124, 121, 120, 119, 118, 116, 115, 114, 113,
|
||||
112, 111, 110, 107, 106, 105, 103, 102, 101, 100,
|
||||
99, 98, 97, 96, 93, 92, 90, 88, 87, 83,
|
||||
82, 80, 79, 77, 76, 73, 72, 71, 70, 69,
|
||||
67, 63, 62, 61, 60, 59, 58, 57, 55, 54,
|
||||
|
||||
29, 27, 25, 22, 21, 19, 18, 14, 11, 7,
|
||||
5, 3, 144, 144, 144, 144, 144, 144, 144, 144,
|
||||
144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
|
||||
144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
|
||||
144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
|
||||
144
|
||||
53, 52, 51, 50, 49, 48, 47, 46, 45, 44,
|
||||
42, 41, 40, 35, 32, 29, 27, 25, 22, 21,
|
||||
19, 18, 14, 11, 7, 5, 3, 159, 159, 159,
|
||||
159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
|
||||
159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
|
||||
159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
|
||||
159, 159, 159, 159, 159, 159
|
||||
} ;
|
||||
|
||||
static yy_state_type yy_last_accepting_state;
|
||||
|
@ -674,7 +679,7 @@ static int input (void );
|
|||
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
|
||||
{ \
|
||||
int c = '*'; \
|
||||
size_t n; \
|
||||
int n; \
|
||||
for ( n = 0; n < max_size && \
|
||||
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
|
||||
buf[n] = (char) c; \
|
||||
|
@ -687,7 +692,7 @@ static int input (void );
|
|||
else \
|
||||
{ \
|
||||
errno=0; \
|
||||
while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
|
||||
while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
|
||||
{ \
|
||||
if( errno != EINTR) \
|
||||
{ \
|
||||
|
@ -809,13 +814,13 @@ yy_match:
|
|||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 145 )
|
||||
if ( yy_current_state >= 160 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
|
||||
++yy_cp;
|
||||
}
|
||||
while ( yy_base[yy_current_state] != 213 );
|
||||
while ( yy_base[yy_current_state] != 228 );
|
||||
|
||||
yy_find_action:
|
||||
yy_act = yy_accept[yy_current_state];
|
||||
|
@ -955,11 +960,11 @@ YY_RULE_SETUP
|
|||
YY_BREAK
|
||||
case 29:
|
||||
YY_RULE_SETUP
|
||||
{return(EQUALS);}
|
||||
{return(SLOT_DESC);}
|
||||
YY_BREAK
|
||||
case 30:
|
||||
YY_RULE_SETUP
|
||||
{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
|
||||
{return(EQUALS);}
|
||||
YY_BREAK
|
||||
case 31:
|
||||
YY_RULE_SETUP
|
||||
|
@ -971,12 +976,11 @@ YY_RULE_SETUP
|
|||
YY_BREAK
|
||||
case 33:
|
||||
YY_RULE_SETUP
|
||||
{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
|
||||
{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
|
||||
YY_BREAK
|
||||
case 34:
|
||||
/* rule 34 can match eol */
|
||||
YY_RULE_SETUP
|
||||
{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
|
||||
{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
|
||||
YY_BREAK
|
||||
case 35:
|
||||
/* rule 35 can match eol */
|
||||
|
@ -984,10 +988,15 @@ YY_RULE_SETUP
|
|||
{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
|
||||
YY_BREAK
|
||||
case 36:
|
||||
/* rule 36 can match eol */
|
||||
YY_RULE_SETUP
|
||||
{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
|
||||
YY_BREAK
|
||||
case 37:
|
||||
YY_RULE_SETUP
|
||||
{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
|
||||
YY_BREAK
|
||||
case 37:
|
||||
case 38:
|
||||
YY_RULE_SETUP
|
||||
ECHO;
|
||||
YY_BREAK
|
||||
|
@ -1135,7 +1144,7 @@ static int yy_get_next_buffer (void)
|
|||
{
|
||||
char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
|
||||
char *source = (yytext_ptr);
|
||||
int number_to_move, i;
|
||||
yy_size_t number_to_move, i;
|
||||
int ret_val;
|
||||
|
||||
if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
|
||||
|
@ -1164,7 +1173,7 @@ static int yy_get_next_buffer (void)
|
|||
/* Try to read more data. */
|
||||
|
||||
/* First move last chars to start of buffer. */
|
||||
number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
|
||||
number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
|
||||
|
||||
for ( i = 0; i < number_to_move; ++i )
|
||||
*(dest++) = *(source++);
|
||||
|
@ -1200,7 +1209,7 @@ static int yy_get_next_buffer (void)
|
|||
|
||||
b->yy_ch_buf = (char *)
|
||||
/* Include room in for 2 EOB chars. */
|
||||
yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
|
||||
yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) );
|
||||
}
|
||||
else
|
||||
/* Can't grow it, we don't own it. */
|
||||
|
@ -1246,10 +1255,10 @@ static int yy_get_next_buffer (void)
|
|||
else
|
||||
ret_val = EOB_ACT_CONTINUE_SCAN;
|
||||
|
||||
if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
|
||||
if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
|
||||
/* Extend the array by 50%, plus the number we really need. */
|
||||
int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
|
||||
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
|
||||
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size );
|
||||
if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
|
||||
YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
|
||||
}
|
||||
|
@ -1283,7 +1292,7 @@ static int yy_get_next_buffer (void)
|
|||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 145 )
|
||||
if ( yy_current_state >= 160 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
|
||||
|
@ -1311,11 +1320,11 @@ static int yy_get_next_buffer (void)
|
|||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 145 )
|
||||
if ( yy_current_state >= 160 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
|
||||
yy_is_jam = (yy_current_state == 144);
|
||||
yy_is_jam = (yy_current_state == 159);
|
||||
|
||||
return yy_is_jam ? 0 : yy_current_state;
|
||||
}
|
||||
|
@ -1510,12 +1519,12 @@ static void yy_load_buffer_state (void)
|
|||
if ( ! b )
|
||||
YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
|
||||
|
||||
b->yy_buf_size = (yy_size_t)size;
|
||||
b->yy_buf_size = size;
|
||||
|
||||
/* yy_ch_buf has to be 2 characters longer than the size given because
|
||||
* we need to put in 2 end-of-buffer characters.
|
||||
*/
|
||||
b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
|
||||
b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2) );
|
||||
if ( ! b->yy_ch_buf )
|
||||
YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
|
||||
|
||||
|
@ -1718,7 +1727,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
|
|||
if ( ! b )
|
||||
YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
|
||||
|
||||
b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
|
||||
b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
|
||||
b->yy_buf_pos = b->yy_ch_buf = base;
|
||||
b->yy_is_our_buffer = 0;
|
||||
b->yy_input_file = NULL;
|
||||
|
@ -1801,7 +1810,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg )
|
|||
do \
|
||||
{ \
|
||||
/* Undo effects of setting up yytext. */ \
|
||||
int yyless_macro_arg = (n); \
|
||||
yy_size_t yyless_macro_arg = (n); \
|
||||
YY_LESS_LINENO(yyless_macro_arg);\
|
||||
yytext[yyleng] = (yy_hold_char); \
|
||||
(yy_c_buf_p) = yytext + yyless_macro_arg; \
|
||||
|
|
|
@ -622,6 +622,22 @@ void add_register(struct chip_instance *chip_instance, char *name, char *val)
|
|||
}
|
||||
}
|
||||
|
||||
void add_slot_desc(struct bus *bus, char *type, char *length, char *designation,
|
||||
char *data_width)
|
||||
{
|
||||
struct device *dev = bus->dev;
|
||||
|
||||
if (dev->bustype != PCI && dev->bustype != DOMAIN) {
|
||||
printf("ERROR: 'slot_type' only allowed for PCI devices\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
dev->smbios_slot_type = type;
|
||||
dev->smbios_slot_length = length;
|
||||
dev->smbios_slot_data_width = data_width;
|
||||
dev->smbios_slot_designation = designation;
|
||||
}
|
||||
|
||||
void add_pci_subsystem_ids(struct bus *bus, int vendor, int device,
|
||||
int inherit)
|
||||
{
|
||||
|
@ -831,7 +847,30 @@ static void pass1(FILE *fil, struct device *ptr, struct device *next)
|
|||
fprintf(fil, "\t.chip_info = &%s_info_%d,\n",
|
||||
chip_ins->chip->name_underscore, chip_ins->id);
|
||||
if (next)
|
||||
fprintf(fil, "\t.next=&%s\n", next->name);
|
||||
fprintf(fil, "\t.next=&%s,\n", next->name);
|
||||
if (ptr->smbios_slot_type || ptr->smbios_slot_data_width ||
|
||||
ptr->smbios_slot_designation || ptr->smbios_slot_length) {
|
||||
fprintf(fil, "#if !DEVTREE_EARLY\n");
|
||||
fprintf(fil, "#if CONFIG(GENERATE_SMBIOS_TABLES)\n");
|
||||
}
|
||||
/* SMBIOS types start at 1, if zero it hasn't been set */
|
||||
if (ptr->smbios_slot_type)
|
||||
fprintf(fil, "\t.smbios_slot_type = %s,\n",
|
||||
ptr->smbios_slot_type);
|
||||
if (ptr->smbios_slot_data_width)
|
||||
fprintf(fil, "\t.smbios_slot_data_width = %s,\n",
|
||||
ptr->smbios_slot_data_width);
|
||||
if (ptr->smbios_slot_designation)
|
||||
fprintf(fil, "\t.smbios_slot_designation = \"%s\",\n",
|
||||
ptr->smbios_slot_designation);
|
||||
if (ptr->smbios_slot_length)
|
||||
fprintf(fil, "\t.smbios_slot_length = %s,\n",
|
||||
ptr->smbios_slot_length);
|
||||
if (ptr->smbios_slot_type || ptr->smbios_slot_data_width ||
|
||||
ptr->smbios_slot_designation || ptr->smbios_slot_length) {
|
||||
fprintf(fil, "#endif\n");
|
||||
fprintf(fil, "#endif\n");
|
||||
}
|
||||
fprintf(fil, "};\n");
|
||||
|
||||
emit_resources(fil, ptr);
|
||||
|
|
|
@ -141,6 +141,18 @@ struct device {
|
|||
struct bus *bus;
|
||||
/* Pointer to last bus under this device. */
|
||||
struct bus *last_bus;
|
||||
|
||||
/* SMBIOS slot type */
|
||||
char *smbios_slot_type;
|
||||
|
||||
/* SMBIOS slot data width */
|
||||
char *smbios_slot_data_width;
|
||||
|
||||
/* SMBIOS slot description for reference designation */
|
||||
char *smbios_slot_designation;
|
||||
|
||||
/* SMBIOS slot length */
|
||||
char *smbios_slot_length;
|
||||
};
|
||||
|
||||
extern struct bus *root_parent;
|
||||
|
@ -158,6 +170,9 @@ void add_pci_subsystem_ids(struct bus *bus, int vendor, int device,
|
|||
void add_ioapic_info(struct bus *bus, int apicid, const char *_srcpin,
|
||||
int irqpin);
|
||||
|
||||
void add_slot_desc(struct bus *bus, char *type, char *length, char *designation,
|
||||
char *data_width);
|
||||
|
||||
void yyrestart(FILE *input_file);
|
||||
|
||||
/* Add chip data to tail of queue. */
|
||||
|
|
|
@ -21,40 +21,41 @@ int linenum = 0;
|
|||
%}
|
||||
%option nodebug
|
||||
%%
|
||||
[ \t]+ {}
|
||||
#.*\n {linenum++;}
|
||||
\r?\n {linenum++;}
|
||||
chip {return(CHIP);}
|
||||
device {return(DEVICE);}
|
||||
register {return(REGISTER);}
|
||||
on {yylval.number=1; return(BOOL);}
|
||||
off {yylval.number=0; return(BOOL);}
|
||||
hidden {yylval.number=3; return(HIDDEN);}
|
||||
pci {yylval.number=PCI; return(BUS);}
|
||||
ioapic {yylval.number=IOAPIC; return(BUS);}
|
||||
pnp {yylval.number=PNP; return(BUS);}
|
||||
i2c {yylval.number=I2C; return(BUS);}
|
||||
lapic {yylval.number=APIC; return(BUS);}
|
||||
cpu_cluster {yylval.number=CPU_CLUSTER; return(BUS);}
|
||||
cpu {yylval.number=CPU; return(BUS);}
|
||||
domain {yylval.number=DOMAIN; return(BUS);}
|
||||
generic {yylval.number=GENERIC; return(BUS);}
|
||||
mmio {yylval.number=MMIO; return(BUS);}
|
||||
spi {yylval.number=SPI; return(BUS);}
|
||||
usb {yylval.number=USB; return(BUS);}
|
||||
irq {yylval.number=IRQ; return(RESOURCE);}
|
||||
drq {yylval.number=DRQ; return(RESOURCE);}
|
||||
io {yylval.number=IO; return(RESOURCE);}
|
||||
ioapic_irq {return(IOAPIC_IRQ);}
|
||||
inherit {return(INHERIT);}
|
||||
subsystemid {return(SUBSYSTEMID);}
|
||||
end {return(END);}
|
||||
= {return(EQUALS);}
|
||||
0x[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
|
||||
[0-9.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
|
||||
[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
|
||||
INT[A-D] {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
|
||||
\"\"[^\"]+\"\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
|
||||
\"[^\"]+\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
|
||||
[^ \n\t]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
|
||||
[ \t]+ {}
|
||||
#.*\n {linenum++;}
|
||||
\r?\n {linenum++;}
|
||||
chip {return(CHIP);}
|
||||
device {return(DEVICE);}
|
||||
register {return(REGISTER);}
|
||||
on {yylval.number=1; return(BOOL);}
|
||||
off {yylval.number=0; return(BOOL);}
|
||||
hidden {yylval.number=3; return(HIDDEN);}
|
||||
pci {yylval.number=PCI; return(BUS);}
|
||||
ioapic {yylval.number=IOAPIC; return(BUS);}
|
||||
pnp {yylval.number=PNP; return(BUS);}
|
||||
i2c {yylval.number=I2C; return(BUS);}
|
||||
lapic {yylval.number=APIC; return(BUS);}
|
||||
cpu_cluster {yylval.number=CPU_CLUSTER; return(BUS);}
|
||||
cpu {yylval.number=CPU; return(BUS);}
|
||||
domain {yylval.number=DOMAIN; return(BUS);}
|
||||
generic {yylval.number=GENERIC; return(BUS);}
|
||||
mmio {yylval.number=MMIO; return(BUS);}
|
||||
spi {yylval.number=SPI; return(BUS);}
|
||||
usb {yylval.number=USB; return(BUS);}
|
||||
irq {yylval.number=IRQ; return(RESOURCE);}
|
||||
drq {yylval.number=DRQ; return(RESOURCE);}
|
||||
io {yylval.number=IO; return(RESOURCE);}
|
||||
ioapic_irq {return(IOAPIC_IRQ);}
|
||||
inherit {return(INHERIT);}
|
||||
subsystemid {return(SUBSYSTEMID);}
|
||||
end {return(END);}
|
||||
smbios_slot_desc {return(SLOT_DESC);}
|
||||
= {return(EQUALS);}
|
||||
0x[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
|
||||
[0-9.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
|
||||
[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
|
||||
INT[A-D] {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
|
||||
\"\"[^\"]+\"\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
|
||||
\"[^\"]+\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
|
||||
[^ \n\t]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
|
||||
%%
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* A Bison parser, made by GNU Bison 3.0.4. */
|
||||
/* A Bison parser, made by GNU Bison 3.0.5. */
|
||||
|
||||
/* Bison implementation for Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
|
||||
Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -44,7 +44,7 @@
|
|||
#define YYBISON 1
|
||||
|
||||
/* Bison version. */
|
||||
#define YYBISON_VERSION "3.0.4"
|
||||
#define YYBISON_VERSION "3.0.5"
|
||||
|
||||
/* Skeleton name. */
|
||||
#define YYSKELETON_NAME "yacc.c"
|
||||
|
@ -144,17 +144,18 @@ extern int yydebug;
|
|||
DOMAIN = 275,
|
||||
IRQ = 276,
|
||||
DRQ = 277,
|
||||
IO = 278,
|
||||
NUMBER = 279,
|
||||
SUBSYSTEMID = 280,
|
||||
INHERIT = 281,
|
||||
IOAPIC_IRQ = 282,
|
||||
IOAPIC = 283,
|
||||
PCIINT = 284,
|
||||
GENERIC = 285,
|
||||
SPI = 286,
|
||||
USB = 287,
|
||||
MMIO = 288
|
||||
SLOT_DESC = 278,
|
||||
IO = 279,
|
||||
NUMBER = 280,
|
||||
SUBSYSTEMID = 281,
|
||||
INHERIT = 282,
|
||||
IOAPIC_IRQ = 283,
|
||||
IOAPIC = 284,
|
||||
PCIINT = 285,
|
||||
GENERIC = 286,
|
||||
SPI = 287,
|
||||
USB = 288,
|
||||
MMIO = 289
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -429,21 +430,21 @@ union yyalloc
|
|||
/* YYFINAL -- State number of the termination state. */
|
||||
#define YYFINAL 3
|
||||
/* YYLAST -- Last index in YYTABLE. */
|
||||
#define YYLAST 40
|
||||
#define YYLAST 43
|
||||
|
||||
/* YYNTOKENS -- Number of terminals. */
|
||||
#define YYNTOKENS 34
|
||||
#define YYNTOKENS 35
|
||||
/* YYNNTS -- Number of nonterminals. */
|
||||
#define YYNNTS 14
|
||||
#define YYNNTS 15
|
||||
/* YYNRULES -- Number of rules. */
|
||||
#define YYNRULES 24
|
||||
#define YYNRULES 28
|
||||
/* YYNSTATES -- Number of states. */
|
||||
#define YYNSTATES 43
|
||||
#define YYNSTATES 49
|
||||
|
||||
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
|
||||
by yylex, with out-of-bounds checking. */
|
||||
#define YYUNDEFTOK 2
|
||||
#define YYMAXUTOK 288
|
||||
#define YYMAXUTOK 289
|
||||
|
||||
#define YYTRANSLATE(YYX) \
|
||||
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
|
||||
|
@ -480,7 +481,7 @@ static const yytype_uint8 yytranslate[] =
|
|||
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
|
||||
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
||||
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
||||
25, 26, 27, 28, 29, 30, 31, 32, 33
|
||||
25, 26, 27, 28, 29, 30, 31, 32, 33, 34
|
||||
};
|
||||
|
||||
#if YYDEBUG
|
||||
|
@ -488,8 +489,8 @@ static const yytype_uint8 yytranslate[] =
|
|||
static const yytype_uint8 yyrline[] =
|
||||
{
|
||||
0, 36, 36, 36, 38, 38, 38, 38, 40, 40,
|
||||
40, 40, 40, 40, 42, 42, 51, 51, 59, 59,
|
||||
61, 64, 67, 70, 73
|
||||
40, 40, 40, 40, 40, 42, 42, 51, 51, 59,
|
||||
59, 61, 64, 67, 70, 73, 76, 79, 82
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -500,11 +501,12 @@ static const char *const yytname[] =
|
|||
{
|
||||
"$end", "error", "$undefined", "CHIP", "DEVICE", "REGISTER", "BOOL",
|
||||
"HIDDEN", "BUS", "RESOURCE", "END", "EQUALS", "HEX", "STRING", "PCI",
|
||||
"PNP", "I2C", "APIC", "CPU_CLUSTER", "CPU", "DOMAIN", "IRQ", "DRQ", "IO",
|
||||
"NUMBER", "SUBSYSTEMID", "INHERIT", "IOAPIC_IRQ", "IOAPIC", "PCIINT",
|
||||
"GENERIC", "SPI", "USB", "MMIO", "$accept", "devtree", "$@1",
|
||||
"chipchildren", "devicechildren", "chip", "@2", "device", "@3", "status",
|
||||
"resource", "registers", "subsystemid", "ioapic_irq", YY_NULLPTR
|
||||
"PNP", "I2C", "APIC", "CPU_CLUSTER", "CPU", "DOMAIN", "IRQ", "DRQ",
|
||||
"SLOT_DESC", "IO", "NUMBER", "SUBSYSTEMID", "INHERIT", "IOAPIC_IRQ",
|
||||
"IOAPIC", "PCIINT", "GENERIC", "SPI", "USB", "MMIO", "$accept",
|
||||
"devtree", "$@1", "chipchildren", "devicechildren", "chip", "@2",
|
||||
"device", "@3", "status", "resource", "registers", "subsystemid",
|
||||
"ioapic_irq", "smbios_slot_desc", YY_NULLPTR
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -516,14 +518,14 @@ static const yytype_uint16 yytoknum[] =
|
|||
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
|
||||
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
|
||||
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
|
||||
285, 286, 287, 288
|
||||
285, 286, 287, 288, 289
|
||||
};
|
||||
# endif
|
||||
|
||||
#define YYPACT_NINF -10
|
||||
#define YYPACT_NINF -12
|
||||
|
||||
#define yypact_value_is_default(Yystate) \
|
||||
(!!((Yystate) == (-10)))
|
||||
(!!((Yystate) == (-12)))
|
||||
|
||||
#define YYTABLE_NINF -1
|
||||
|
||||
|
@ -534,11 +536,11 @@ static const yytype_uint16 yytoknum[] =
|
|||
STATE-NUM. */
|
||||
static const yytype_int8 yypact[] =
|
||||
{
|
||||
-10, 11, 9, -10, 1, -10, -10, -10, 0, 5,
|
||||
3, -10, -10, -10, -10, -9, 6, 2, 7, -10,
|
||||
-10, -10, -10, -10, -3, -5, -10, -1, 4, -10,
|
||||
-10, -10, -10, -10, 10, 8, -4, 12, 13, 14,
|
||||
-10, -10, -10
|
||||
-12, 11, 9, -12, 1, -12, -12, -12, 0, 5,
|
||||
3, -12, -12, -12, -12, -10, 6, 2, 8, -12,
|
||||
-12, -12, -12, -12, -3, -1, -12, 13, 4, 7,
|
||||
-12, -12, -12, -12, -12, -12, 16, 15, 10, -11,
|
||||
12, 17, -5, 14, -12, 18, -12, -12, -12
|
||||
};
|
||||
|
||||
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
|
||||
|
@ -546,25 +548,25 @@ static const yytype_int8 yypact[] =
|
|||
means the default is an error. */
|
||||
static const yytype_uint8 yydefact[] =
|
||||
{
|
||||
2, 0, 0, 1, 0, 3, 14, 7, 0, 0,
|
||||
0, 15, 5, 4, 6, 0, 0, 0, 0, 18,
|
||||
19, 16, 21, 13, 0, 0, 17, 0, 0, 9,
|
||||
8, 10, 11, 12, 0, 0, 0, 0, 22, 0,
|
||||
20, 23, 24
|
||||
2, 0, 0, 1, 0, 3, 15, 7, 0, 0,
|
||||
0, 16, 5, 4, 6, 0, 0, 0, 0, 19,
|
||||
20, 17, 22, 14, 0, 0, 18, 0, 0, 0,
|
||||
9, 8, 10, 11, 12, 13, 0, 0, 0, 0,
|
||||
0, 28, 23, 0, 21, 27, 24, 25, 26
|
||||
};
|
||||
|
||||
/* YYPGOTO[NTERM-NUM]. */
|
||||
static const yytype_int8 yypgoto[] =
|
||||
{
|
||||
-10, -10, -10, -10, -10, -6, -10, 16, -10, -10,
|
||||
-10, -10, -10, -10
|
||||
-12, -12, -12, -12, -12, -6, -12, 19, -12, -12,
|
||||
-12, -12, -12, -12, -12
|
||||
};
|
||||
|
||||
/* YYDEFGOTO[NTERM-NUM]. */
|
||||
static const yytype_int8 yydefgoto[] =
|
||||
{
|
||||
-1, 1, 2, 8, 24, 5, 7, 13, 23, 21,
|
||||
31, 14, 32, 33
|
||||
32, 14, 33, 34, 35
|
||||
};
|
||||
|
||||
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
|
||||
|
@ -573,46 +575,46 @@ static const yytype_int8 yydefgoto[] =
|
|||
static const yytype_uint8 yytable[] =
|
||||
{
|
||||
4, 9, 12, 4, 9, 10, 25, 26, 19, 20,
|
||||
11, 3, 4, 15, 6, 17, 16, 18, 29, 34,
|
||||
22, 37, 27, 35, 28, 39, 0, 0, 36, 0,
|
||||
0, 0, 38, 0, 0, 0, 40, 0, 42, 41,
|
||||
30
|
||||
11, 3, 4, 15, 6, 17, 16, 18, 30, 43,
|
||||
27, 22, 46, 28, 36, 29, 37, 40, 41, 38,
|
||||
45, 48, 39, 0, 0, 42, 0, 44, 0, 47,
|
||||
0, 0, 0, 31
|
||||
};
|
||||
|
||||
static const yytype_int8 yycheck[] =
|
||||
{
|
||||
3, 4, 8, 3, 4, 5, 9, 10, 6, 7,
|
||||
10, 0, 3, 8, 13, 24, 13, 11, 24, 24,
|
||||
13, 11, 25, 24, 27, 29, -1, -1, 24, -1,
|
||||
-1, -1, 24, -1, -1, -1, 24, -1, 24, 26,
|
||||
24
|
||||
10, 0, 3, 8, 13, 25, 13, 11, 24, 30,
|
||||
23, 13, 27, 26, 25, 28, 13, 11, 13, 25,
|
||||
13, 13, 25, -1, -1, 25, -1, 25, -1, 25,
|
||||
-1, -1, -1, 24
|
||||
};
|
||||
|
||||
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
||||
symbol of state STATE-NUM. */
|
||||
static const yytype_uint8 yystos[] =
|
||||
{
|
||||
0, 35, 36, 0, 3, 39, 13, 40, 37, 4,
|
||||
5, 10, 39, 41, 45, 8, 13, 24, 11, 6,
|
||||
7, 43, 13, 42, 38, 9, 10, 25, 27, 39,
|
||||
41, 44, 46, 47, 24, 24, 24, 11, 24, 29,
|
||||
24, 26, 24
|
||||
0, 36, 37, 0, 3, 40, 13, 41, 38, 4,
|
||||
5, 10, 40, 42, 46, 8, 13, 25, 11, 6,
|
||||
7, 44, 13, 43, 39, 9, 10, 23, 26, 28,
|
||||
40, 42, 45, 47, 48, 49, 25, 13, 25, 25,
|
||||
11, 13, 25, 30, 25, 13, 27, 25, 13
|
||||
};
|
||||
|
||||
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
|
||||
static const yytype_uint8 yyr1[] =
|
||||
{
|
||||
0, 34, 36, 35, 37, 37, 37, 37, 38, 38,
|
||||
38, 38, 38, 38, 40, 39, 42, 41, 43, 43,
|
||||
44, 45, 46, 46, 47
|
||||
0, 35, 37, 36, 38, 38, 38, 38, 39, 39,
|
||||
39, 39, 39, 39, 39, 41, 40, 43, 42, 44,
|
||||
44, 45, 46, 47, 47, 48, 49, 49, 49
|
||||
};
|
||||
|
||||
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
|
||||
static const yytype_uint8 yyr2[] =
|
||||
{
|
||||
0, 2, 0, 2, 2, 2, 2, 0, 2, 2,
|
||||
2, 2, 2, 0, 0, 5, 0, 7, 1, 1,
|
||||
4, 4, 3, 4, 4
|
||||
2, 2, 2, 2, 0, 0, 5, 0, 7, 1,
|
||||
1, 4, 4, 3, 4, 4, 5, 4, 3
|
||||
};
|
||||
|
||||
|
||||
|
@ -973,6 +975,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
|
|||
case N: \
|
||||
yyformat = S; \
|
||||
break
|
||||
default: /* Avoid compiler warnings. */
|
||||
YYCASE_(0, YY_("syntax error"));
|
||||
YYCASE_(1, YY_("syntax error, unexpected %s"));
|
||||
YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
|
||||
|
@ -1294,7 +1297,7 @@ yyreduce:
|
|||
|
||||
break;
|
||||
|
||||
case 14:
|
||||
case 15:
|
||||
|
||||
{
|
||||
(yyval.chip_instance) = new_chip_instance((yyvsp[0].string));
|
||||
|
@ -1304,7 +1307,7 @@ yyreduce:
|
|||
|
||||
break;
|
||||
|
||||
case 15:
|
||||
case 16:
|
||||
|
||||
{
|
||||
cur_chip_instance = chip_dequeue_tail();
|
||||
|
@ -1312,7 +1315,7 @@ yyreduce:
|
|||
|
||||
break;
|
||||
|
||||
case 16:
|
||||
case 17:
|
||||
|
||||
{
|
||||
(yyval.dev) = new_device(cur_parent, cur_chip_instance, (yyvsp[-2].number), (yyvsp[-1].string), (yyvsp[0].number));
|
||||
|
@ -1321,7 +1324,7 @@ yyreduce:
|
|||
|
||||
break;
|
||||
|
||||
case 17:
|
||||
case 18:
|
||||
|
||||
{
|
||||
cur_parent = (yyvsp[-2].dev)->parent;
|
||||
|
@ -1329,36 +1332,54 @@ yyreduce:
|
|||
|
||||
break;
|
||||
|
||||
case 20:
|
||||
case 21:
|
||||
|
||||
{ add_resource(cur_parent, (yyvsp[-3].number), strtol((yyvsp[-2].string), NULL, 0), strtol((yyvsp[0].string), NULL, 0)); }
|
||||
|
||||
break;
|
||||
|
||||
case 21:
|
||||
case 22:
|
||||
|
||||
{ add_register(cur_chip_instance, (yyvsp[-2].string), (yyvsp[0].string)); }
|
||||
|
||||
break;
|
||||
|
||||
case 22:
|
||||
case 23:
|
||||
|
||||
{ add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-1].string), NULL, 16), strtol((yyvsp[0].string), NULL, 16), 0); }
|
||||
|
||||
break;
|
||||
|
||||
case 23:
|
||||
case 24:
|
||||
|
||||
{ add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-2].string), NULL, 16), strtol((yyvsp[-1].string), NULL, 16), 1); }
|
||||
|
||||
break;
|
||||
|
||||
case 24:
|
||||
case 25:
|
||||
|
||||
{ add_ioapic_info(cur_parent, strtol((yyvsp[-2].string), NULL, 16), (yyvsp[-1].string), strtol((yyvsp[0].string), NULL, 16)); }
|
||||
|
||||
break;
|
||||
|
||||
case 26:
|
||||
|
||||
{ add_slot_desc(cur_parent, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string)); }
|
||||
|
||||
break;
|
||||
|
||||
case 27:
|
||||
|
||||
{ add_slot_desc(cur_parent, (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string), NULL); }
|
||||
|
||||
break;
|
||||
|
||||
case 28:
|
||||
|
||||
{ add_slot_desc(cur_parent, (yyvsp[-1].string), (yyvsp[0].string), NULL, NULL); }
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
default: break;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* A Bison parser, made by GNU Bison 3.0.4. */
|
||||
/* A Bison parser, made by GNU Bison 3.0.5. */
|
||||
|
||||
/* Bison interface for Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
|
||||
Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -65,17 +65,18 @@ extern int yydebug;
|
|||
DOMAIN = 275,
|
||||
IRQ = 276,
|
||||
DRQ = 277,
|
||||
IO = 278,
|
||||
NUMBER = 279,
|
||||
SUBSYSTEMID = 280,
|
||||
INHERIT = 281,
|
||||
IOAPIC_IRQ = 282,
|
||||
IOAPIC = 283,
|
||||
PCIINT = 284,
|
||||
GENERIC = 285,
|
||||
SPI = 286,
|
||||
USB = 287,
|
||||
MMIO = 288
|
||||
SLOT_DESC = 278,
|
||||
IO = 279,
|
||||
NUMBER = 280,
|
||||
SUBSYSTEMID = 281,
|
||||
INHERIT = 282,
|
||||
IOAPIC_IRQ = 283,
|
||||
IOAPIC = 284,
|
||||
PCIINT = 285,
|
||||
GENERIC = 286,
|
||||
SPI = 287,
|
||||
USB = 288,
|
||||
MMIO = 289
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
@ -31,13 +31,13 @@ static struct chip_instance *cur_chip_instance;
|
|||
int number;
|
||||
}
|
||||
|
||||
%token CHIP DEVICE REGISTER BOOL HIDDEN BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC CPU_CLUSTER CPU DOMAIN IRQ DRQ IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO
|
||||
%token CHIP DEVICE REGISTER BOOL HIDDEN BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC CPU_CLUSTER CPU DOMAIN IRQ DRQ SLOT_DESC IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO
|
||||
%%
|
||||
devtree: { cur_parent = root_parent; } chip;
|
||||
|
||||
chipchildren: chipchildren device | chipchildren chip | chipchildren registers | /* empty */ ;
|
||||
|
||||
devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | devicechildren ioapic_irq | /* empty */ ;
|
||||
devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | devicechildren ioapic_irq | devicechildren smbios_slot_desc | /* empty */ ;
|
||||
|
||||
chip: CHIP STRING /* == path */ {
|
||||
$<chip_instance>$ = new_chip_instance($<string>2);
|
||||
|
@ -72,4 +72,14 @@ subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT
|
|||
|
||||
ioapic_irq: IOAPIC_IRQ NUMBER PCIINT NUMBER
|
||||
{ add_ioapic_info(cur_parent, strtol($<string>2, NULL, 16), $<string>3, strtol($<string>4, NULL, 16)); };
|
||||
|
||||
smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING
|
||||
{ add_slot_desc(cur_parent, $<string>2, $<string>3, $<string>4, $<string>5); };
|
||||
|
||||
smbios_slot_desc: SLOT_DESC STRING STRING STRING
|
||||
{ add_slot_desc(cur_parent, $<string>2, $<string>3, $<string>4, NULL); };
|
||||
|
||||
smbios_slot_desc: SLOT_DESC STRING STRING
|
||||
{ add_slot_desc(cur_parent, $<string>2, $<string>3, NULL, NULL); };
|
||||
|
||||
%%
|
||||
|
|
Loading…
Reference in New Issue