Add configurable ramstage support for minimal PCI scanning
This CL has changes that allow us to enable a configurable ramstage, and one change that allows us to minimize PCI scanning. Minimal scanning is a frequently requested feature. To enable it, we add two new variables to src/Kconfig CONFIGURABLE_RAMSTAGE is the overall variable controlling other options for minimizing the ramstage. MINIMAL_PCI_SCANNING is how we indicate we wish to enable minimal PCI scanning. Some devices must be scanned in all cases, such as 0:0.0. To indicate which devices we must scan, we add a new mandatory keyword to sconfig It is used in place of on, off, or hidden, and indicates a device is enabled and mandatory. Mandatory devices are always scanned. When MINIMAL_PCI_SCANNING is enabled, ONLY mandatory devices are scanned. We further add support in src/device/pci_device.c to manage both MINIMAL_PCI_SCANNING and mandatory devices. Finally, to show how this works in practice, we add mandatory keywords to 3 devices on the qemu-q35. TEST= 1. This is tested and working on the qemu-q35 target. 2. On CML-Hatch Before CL: Total Boot time: ~685ms After CL: Total Boot time: ~615ms Change-Id: I2073d9f8e9297c2b02530821ebb634ea2a5c758e Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36221 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Jeremy Soller <jeremy@system76.com>
This commit is contained in:
parent
91dc1e74a5
commit
466ca2c1ad
15
src/Kconfig
15
src/Kconfig
|
@ -354,6 +354,21 @@ config RAMPAYLOAD
|
|||
Skip PCI enumeration logic and only allocate BAR for fixed devices
|
||||
(bootable devices, TPM over GSPI).
|
||||
|
||||
config CONFIGURABLE_RAMSTAGE
|
||||
bool "Enable a configurable ramstage."
|
||||
default y if ARCH_X86
|
||||
help
|
||||
A configurable ramstage allows you to select which parts of the ramstage
|
||||
to run. Currently, we can only select a minimal PCI scanning step.
|
||||
The minimal PCI scanning will only check those parts that are enabled
|
||||
in the devicetree.cb. By convention none of those devices should be bridges.
|
||||
|
||||
config MINIMAL_PCI_SCANNING
|
||||
bool "Enable minimal PCI scanning"
|
||||
depends on CONFIGURABLE_RAMSTAGE
|
||||
help
|
||||
If this option is enabled, coreboot will scan only devices
|
||||
marked as mandatory in devicetree.cb
|
||||
endmenu
|
||||
|
||||
menu "Mainboard"
|
||||
|
|
|
@ -1195,6 +1195,12 @@ void pci_scan_bus(struct bus *bus, unsigned int min_devfn,
|
|||
* non-existence and single function devices.
|
||||
*/
|
||||
for (devfn = min_devfn; devfn <= max_devfn; devfn++) {
|
||||
if (CONFIG(MINIMAL_PCI_SCANNING)) {
|
||||
dev = pcidev_path_behind(bus, devfn);
|
||||
if (!dev || !dev->mandatory)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* First thing setup the device structure. */
|
||||
dev = pci_scan_get_dev(bus, devfn);
|
||||
|
||||
|
|
|
@ -119,7 +119,10 @@ struct device {
|
|||
unsigned int initialized : 1; /* 1 if we have initialized the device */
|
||||
unsigned int on_mainboard : 1;
|
||||
unsigned int disable_pcie_aspm : 1;
|
||||
unsigned int hidden : 1; /* set if we should hide from UI */
|
||||
/* set if we should hide from UI */
|
||||
unsigned int hidden : 1;
|
||||
/* set if this device is used even in minimum PCI cases */
|
||||
unsigned int mandatory : 1;
|
||||
u8 command;
|
||||
uint16_t hotplug_buses; /* Number of hotplug buses to allocate */
|
||||
|
||||
|
|
|
@ -5,10 +5,10 @@ chip mainboard/emulation/qemu-q35
|
|||
end
|
||||
end
|
||||
device domain 0 on
|
||||
device pci 0.0 on end # northbridge (q35)
|
||||
device pci 0.0 mandatory end # northbridge (q35)
|
||||
chip southbridge/intel/i82801ix
|
||||
# present unconditionally
|
||||
device pci 1f.0 on end # LPC
|
||||
device pci 1f.0 mandatory end # LPC
|
||||
device pci 1f.2 on end # SATA
|
||||
device pci 1f.3 on end # SMBus
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#define FLEX_SCANNER
|
||||
#define YY_FLEX_MAJOR_VERSION 2
|
||||
#define YY_FLEX_MINOR_VERSION 6
|
||||
#define YY_FLEX_SUBMINOR_VERSION 1
|
||||
#define YY_FLEX_SUBMINOR_VERSION 4
|
||||
#if YY_FLEX_SUBMINOR_VERSION > 0
|
||||
#define FLEX_BETA
|
||||
#endif
|
||||
|
@ -81,10 +81,16 @@ typedef unsigned int flex_uint32_t;
|
|||
#define UINT32_MAX (4294967295U)
|
||||
#endif
|
||||
|
||||
#ifndef SIZE_MAX
|
||||
#define SIZE_MAX (~(size_t)0)
|
||||
#endif
|
||||
|
||||
#endif /* ! C99 */
|
||||
|
||||
#endif /* ! FLEXINT_H */
|
||||
|
||||
/* begin standard C++ headers. */
|
||||
|
||||
/* TODO: this is always defined, so inline it */
|
||||
#define yyconst const
|
||||
|
||||
|
@ -97,32 +103,26 @@ typedef unsigned int flex_uint32_t;
|
|||
/* Returned upon end-of-file. */
|
||||
#define YY_NULL 0
|
||||
|
||||
/* Promotes a possibly negative, possibly signed char to an unsigned
|
||||
* integer for use as an array index. If the signed char is negative,
|
||||
* we want to instead treat it as an 8-bit unsigned char, hence the
|
||||
* double cast.
|
||||
/* Promotes a possibly negative, possibly signed char to an
|
||||
* integer in range [0..255] for use as an array index.
|
||||
*/
|
||||
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
|
||||
#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
|
||||
|
||||
/* Enter a start condition. This macro really ought to take a parameter,
|
||||
* but we do it the disgusting crufty way forced on us by the ()-less
|
||||
* definition of BEGIN.
|
||||
*/
|
||||
#define BEGIN (yy_start) = 1 + 2 *
|
||||
|
||||
/* Translate the current start state into a value that can be later handed
|
||||
* to BEGIN to return to the state. The YYSTATE alias is for lex
|
||||
* compatibility.
|
||||
*/
|
||||
#define YY_START (((yy_start) - 1) / 2)
|
||||
#define YYSTATE YY_START
|
||||
|
||||
/* Action number for EOF rule of a given start state. */
|
||||
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
|
||||
|
||||
/* Special action meaning "start processing a new file". */
|
||||
#define YY_NEW_FILE yyrestart( yyin )
|
||||
|
||||
#define YY_END_OF_BUFFER_CHAR 0
|
||||
|
||||
/* Size of default input buffer. */
|
||||
|
@ -159,16 +159,14 @@ extern FILE *yyin, *yyout;
|
|||
#define EOB_ACT_CONTINUE_SCAN 0
|
||||
#define EOB_ACT_END_OF_FILE 1
|
||||
#define EOB_ACT_LAST_MATCH 2
|
||||
|
||||
#define YY_LESS_LINENO(n)
|
||||
#define YY_LINENO_REWIND_TO(ptr)
|
||||
|
||||
/* Return all but the first "n" matched characters back to the input stream. */
|
||||
#define yyless(n) \
|
||||
do \
|
||||
{ \
|
||||
/* Undo effects of setting up yytext. */ \
|
||||
yy_size_t yyless_macro_arg = (n); \
|
||||
int yyless_macro_arg = (n); \
|
||||
YY_LESS_LINENO(yyless_macro_arg);\
|
||||
*yy_cp = (yy_hold_char); \
|
||||
YY_RESTORE_YY_MORE_OFFSET \
|
||||
|
@ -176,7 +174,6 @@ extern FILE *yyin, *yyout;
|
|||
YY_DO_BEFORE_ACTION; /* set up yytext again */ \
|
||||
} \
|
||||
while ( 0 )
|
||||
|
||||
#define unput(c) yyunput( c, (yytext_ptr) )
|
||||
|
||||
#ifndef YY_STRUCT_YY_BUFFER_STATE
|
||||
|
@ -258,7 +255,6 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
|
|||
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
|
||||
? (yy_buffer_stack)[(yy_buffer_stack_top)] \
|
||||
: NULL)
|
||||
|
||||
/* Same as previous macro, but useful when we know that the buffer stack is not
|
||||
* NULL or when we need an lvalue. For internal use only.
|
||||
*/
|
||||
|
@ -290,19 +286,17 @@ void yypop_buffer_state (void );
|
|||
static void yyensure_buffer_stack ( void );
|
||||
static void yy_load_buffer_state ( void );
|
||||
static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
|
||||
|
||||
#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
|
||||
|
||||
YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size );
|
||||
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
|
||||
YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
|
||||
YY_BUFFER_STATE yy_scan_string ( const char *yy_str );
|
||||
YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len );
|
||||
|
||||
void *yyalloc ( yy_size_t );
|
||||
void *yyrealloc ( void *, yy_size_t );
|
||||
void yyfree ( void * );
|
||||
|
||||
#define yy_new_buffer yy_create_buffer
|
||||
|
||||
#define yy_set_interactive(is_interactive) \
|
||||
{ \
|
||||
if ( ! YY_CURRENT_BUFFER ){ \
|
||||
|
@ -312,7 +306,6 @@ void yyfree (void * );
|
|||
} \
|
||||
YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
|
||||
}
|
||||
|
||||
#define yy_set_bol(at_bol) \
|
||||
{ \
|
||||
if ( ! YY_CURRENT_BUFFER ){\
|
||||
|
@ -322,19 +315,16 @@ void yyfree (void * );
|
|||
} \
|
||||
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
|
||||
}
|
||||
|
||||
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
|
||||
|
||||
/* Begin user sect3 */
|
||||
|
||||
typedef unsigned char YY_CHAR;
|
||||
typedef flex_uint8_t YY_CHAR;
|
||||
|
||||
FILE *yyin = NULL, *yyout = NULL;
|
||||
|
||||
typedef int yy_state_type;
|
||||
|
||||
extern int yylineno;
|
||||
|
||||
int yylineno = 1;
|
||||
|
||||
extern char *yytext;
|
||||
|
@ -346,7 +336,7 @@ extern char *yytext;
|
|||
static yy_state_type yy_get_previous_state ( void );
|
||||
static yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
|
||||
static int yy_get_next_buffer ( void );
|
||||
static void yynoreturn yy_fatal_error (yyconst char* msg );
|
||||
static void yynoreturn yy_fatal_error ( const char* msg );
|
||||
|
||||
/* Done after the current pattern has been matched and before the
|
||||
* corresponding action - sets up yytext.
|
||||
|
@ -357,9 +347,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg );
|
|||
(yy_hold_char) = *yy_cp; \
|
||||
*yy_cp = '\0'; \
|
||||
(yy_c_buf_p) = yy_cp;
|
||||
|
||||
#define YY_NUM_RULES 38
|
||||
#define YY_END_OF_BUFFER 39
|
||||
#define YY_NUM_RULES 39
|
||||
#define YY_END_OF_BUFFER 40
|
||||
/* This struct is not used in this scanner,
|
||||
but its presence is necessary. */
|
||||
struct yy_trans_info
|
||||
|
@ -367,28 +356,29 @@ struct yy_trans_info
|
|||
flex_int32_t yy_verify;
|
||||
flex_int32_t yy_nxt;
|
||||
};
|
||||
static yyconst flex_int16_t yy_accept[160] =
|
||||
static const flex_int16_t yy_accept[168] =
|
||||
{ 0,
|
||||
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,
|
||||
0, 0, 40, 38, 1, 3, 38, 38, 38, 33,
|
||||
33, 31, 34, 38, 34, 34, 34, 38, 38, 38,
|
||||
38, 38, 38, 38, 38, 38, 38, 38, 1, 3,
|
||||
38, 0, 38, 38, 0, 2, 33, 34, 38, 38,
|
||||
38, 38, 34, 38, 38, 38, 38, 38, 38, 38,
|
||||
25, 38, 38, 38, 38, 38, 7, 38, 38, 38,
|
||||
38, 38, 38, 38, 37, 37, 38, 0, 32, 38,
|
||||
38, 17, 38, 38, 24, 29, 38, 38, 14, 38,
|
||||
38, 23, 38, 38, 38, 8, 11, 13, 38, 38,
|
||||
21, 38, 22, 38, 0, 35, 4, 38, 38, 38,
|
||||
|
||||
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
|
||||
38, 38, 38, 38, 38, 38, 20, 38, 38, 38,
|
||||
36, 36, 38, 38, 38, 38, 38, 38, 38, 15,
|
||||
38, 38, 38, 38, 38, 5, 18, 38, 9, 38,
|
||||
12, 38, 38, 38, 38, 38, 19, 27, 38, 38,
|
||||
38, 38, 38, 38, 38, 38, 6, 38, 38, 38,
|
||||
38, 10, 38, 38, 38, 26, 38, 38, 16, 38,
|
||||
28, 38, 38, 38, 38, 30, 0
|
||||
} ;
|
||||
|
||||
static yyconst YY_CHAR yy_ec[256] =
|
||||
static const YY_CHAR yy_ec[256] =
|
||||
{ 0,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
|
||||
1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
|
||||
|
@ -420,7 +410,7 @@ static yyconst YY_CHAR yy_ec[256] =
|
|||
1, 1, 1, 1, 1
|
||||
} ;
|
||||
|
||||
static yyconst YY_CHAR yy_meta[39] =
|
||||
static const YY_CHAR yy_meta[39] =
|
||||
{ 0,
|
||||
1, 2, 2, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
|
@ -428,114 +418,118 @@ static yyconst YY_CHAR yy_meta[39] =
|
|||
1, 1, 1, 1, 1, 1, 1, 1
|
||||
} ;
|
||||
|
||||
static yyconst flex_uint16_t yy_base[167] =
|
||||
static const flex_int16_t yy_base[175] =
|
||||
{ 0,
|
||||
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,
|
||||
0, 0, 235, 0, 232, 236, 230, 37, 41, 38,
|
||||
195, 0, 44, 217, 54, 78, 60, 209, 204, 45,
|
||||
211, 48, 42, 52, 206, 62, 193, 0, 223, 236,
|
||||
88, 219, 93, 79, 220, 236, 0, 93, 104, 207,
|
||||
196, 185, 96, 192, 187, 197, 188, 195, 195, 189,
|
||||
195, 180, 180, 181, 183, 185, 0, 181, 175, 181,
|
||||
185, 177, 183, 182, 0, 236, 115, 194, 0, 187,
|
||||
167, 180, 170, 177, 0, 0, 172, 172, 0, 170,
|
||||
160, 0, 164, 168, 158, 0, 0, 0, 161, 160,
|
||||
0, 151, 0, 178, 177, 0, 0, 162, 161, 154,
|
||||
|
||||
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
|
||||
146, 156, 144, 150, 155, 156, 0, 139, 142, 132,
|
||||
0, 236, 143, 147, 139, 141, 137, 139, 144, 0,
|
||||
128, 127, 127, 126, 123, 0, 0, 138, 0, 122,
|
||||
139, 125, 132, 136, 117, 117, 0, 0, 124, 116,
|
||||
115, 113, 124, 97, 98, 91, 0, 102, 100, 98,
|
||||
83, 0, 80, 83, 74, 0, 60, 63, 0, 63,
|
||||
0, 56, 51, 33, 29, 0, 236, 40, 132, 134,
|
||||
136, 138, 140, 142
|
||||
} ;
|
||||
|
||||
static yyconst flex_int16_t yy_def[167] =
|
||||
static const flex_int16_t yy_def[175] =
|
||||
{ 0,
|
||||
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,
|
||||
167, 1, 167, 168, 167, 167, 168, 169, 170, 168,
|
||||
10, 168, 10, 168, 10, 10, 10, 168, 168, 168,
|
||||
168, 168, 168, 168, 168, 168, 168, 168, 167, 167,
|
||||
169, 171, 172, 170, 173, 167, 10, 10, 10, 168,
|
||||
168, 168, 10, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 168, 168, 168, 168, 167, 172, 174, 39, 168,
|
||||
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 168, 168, 168, 167, 168, 168, 168, 168, 168,
|
||||
|
||||
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
|
||||
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 167, 168, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
|
||||
168, 168, 168, 168, 168, 168, 0, 167, 167, 167,
|
||||
167, 167, 167, 167
|
||||
} ;
|
||||
|
||||
static yyconst flex_uint16_t yy_nxt[267] =
|
||||
static const flex_int16_t yy_nxt[275] =
|
||||
{ 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, 158, 38, 38,
|
||||
28, 33, 35, 36, 37, 37, 37, 166, 38, 38,
|
||||
38, 38, 38, 49, 38, 38, 38, 38, 38, 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, 38, 56, 54, 165, 38, 38, 38, 57,
|
||||
58, 164, 50, 51, 55, 163, 52, 41, 162, 59,
|
||||
35, 36, 161, 42, 38, 38, 38, 46, 61, 32,
|
||||
32, 62, 65, 160, 68, 68, 63, 28, 43, 38,
|
||||
|
||||
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,
|
||||
38, 38, 38, 38, 38, 159, 44, 158, 157, 45,
|
||||
69, 69, 69, 156, 69, 69, 68, 68, 155, 94,
|
||||
69, 69, 69, 69, 69, 69, 154, 153, 152, 151,
|
||||
150, 73, 31, 31, 34, 34, 32, 32, 67, 67,
|
||||
35, 35, 68, 68, 149, 148, 147, 146, 145, 144,
|
||||
143, 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,
|
||||
103, 102, 101, 100, 99, 98, 97, 96, 95, 93,
|
||||
|
||||
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
|
||||
92, 91, 90, 89, 88, 87, 86, 85, 84, 83,
|
||||
82, 81, 80, 79, 78, 77, 76, 75, 74, 72,
|
||||
71, 70, 36, 66, 29, 64, 60, 53, 48, 47,
|
||||
40, 39, 30, 29, 167, 3, 167, 167, 167, 167,
|
||||
167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
|
||||
167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
|
||||
167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
|
||||
167, 167, 167, 167
|
||||
} ;
|
||||
|
||||
static yyconst flex_int16_t yy_chk[267] =
|
||||
static const flex_int16_t yy_chk[275] =
|
||||
{ 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,
|
||||
160, 8, 9, 9, 10, 10, 10, 157, 10, 10,
|
||||
168, 8, 9, 9, 10, 10, 10, 165, 10, 10,
|
||||
13, 13, 13, 20, 10, 10, 10, 10, 10, 10,
|
||||
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,
|
||||
15, 15, 15, 23, 22, 164, 17, 17, 17, 23,
|
||||
24, 163, 20, 20, 22, 162, 20, 15, 160, 24,
|
||||
34, 34, 158, 15, 16, 16, 16, 17, 26, 31,
|
||||
31, 26, 31, 157, 33, 33, 26, 33, 16, 38,
|
||||
|
||||
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,
|
||||
38, 38, 43, 43, 43, 155, 16, 154, 153, 16,
|
||||
39, 39, 39, 151, 39, 39, 67, 67, 150, 67,
|
||||
39, 39, 39, 39, 39, 39, 149, 148, 146, 145,
|
||||
144, 43, 169, 169, 170, 170, 171, 171, 172, 172,
|
||||
173, 173, 174, 174, 143, 142, 141, 140, 139, 136,
|
||||
135, 134, 133, 132, 131, 130, 128, 125, 124, 123,
|
||||
122, 121, 119, 118, 117, 116, 115, 114, 113, 110,
|
||||
109, 108, 106, 105, 104, 103, 102, 101, 100, 99,
|
||||
98, 95, 94, 92, 90, 89, 85, 84, 83, 81,
|
||||
80, 78, 77, 74, 73, 72, 71, 70, 68, 64,
|
||||
|
||||
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
|
||||
63, 62, 61, 60, 59, 58, 56, 55, 54, 53,
|
||||
52, 51, 50, 49, 48, 47, 46, 45, 44, 42,
|
||||
41, 40, 35, 32, 29, 27, 25, 21, 19, 18,
|
||||
14, 11, 7, 5, 3, 167, 167, 167, 167, 167,
|
||||
167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
|
||||
167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
|
||||
167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
|
||||
167, 167, 167, 167
|
||||
} ;
|
||||
|
||||
static yy_state_type yy_last_accepting_state;
|
||||
|
@ -636,15 +630,14 @@ extern int yywrap (void );
|
|||
#endif
|
||||
|
||||
#ifndef yytext_ptr
|
||||
static void yy_flex_strncpy (char *,yyconst char *,int );
|
||||
static void yy_flex_strncpy ( char *, const char *, int );
|
||||
#endif
|
||||
|
||||
#ifdef YY_NEED_STRLEN
|
||||
static int yy_flex_strlen (yyconst char * );
|
||||
static int yy_flex_strlen ( const char * );
|
||||
#endif
|
||||
|
||||
#ifndef YY_NO_INPUT
|
||||
|
||||
#ifdef __cplusplus
|
||||
static int yyinput ( void );
|
||||
#else
|
||||
|
@ -814,13 +807,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 >= 160 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
if ( yy_current_state >= 168 )
|
||||
yy_c = yy_meta[yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
|
||||
++yy_cp;
|
||||
}
|
||||
while ( yy_base[yy_current_state] != 228 );
|
||||
while ( yy_base[yy_current_state] != 236 );
|
||||
|
||||
yy_find_action:
|
||||
yy_act = yy_accept[yy_current_state];
|
||||
|
@ -880,95 +873,95 @@ YY_RULE_SETUP
|
|||
YY_BREAK
|
||||
case 9:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=3; return(HIDDEN);}
|
||||
{yylval.number=3; return(STATUS);}
|
||||
YY_BREAK
|
||||
case 10:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=PCI; return(BUS);}
|
||||
{yylval.number=5; return(STATUS);}
|
||||
YY_BREAK
|
||||
case 11:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=IOAPIC; return(BUS);}
|
||||
{yylval.number=PCI; return(BUS);}
|
||||
YY_BREAK
|
||||
case 12:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=PNP; return(BUS);}
|
||||
{yylval.number=IOAPIC; return(BUS);}
|
||||
YY_BREAK
|
||||
case 13:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=I2C; return(BUS);}
|
||||
{yylval.number=PNP; return(BUS);}
|
||||
YY_BREAK
|
||||
case 14:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=APIC; return(BUS);}
|
||||
{yylval.number=I2C; return(BUS);}
|
||||
YY_BREAK
|
||||
case 15:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=CPU_CLUSTER; return(BUS);}
|
||||
{yylval.number=APIC; return(BUS);}
|
||||
YY_BREAK
|
||||
case 16:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=CPU; return(BUS);}
|
||||
{yylval.number=CPU_CLUSTER; return(BUS);}
|
||||
YY_BREAK
|
||||
case 17:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=DOMAIN; return(BUS);}
|
||||
{yylval.number=CPU; return(BUS);}
|
||||
YY_BREAK
|
||||
case 18:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=GENERIC; return(BUS);}
|
||||
{yylval.number=DOMAIN; return(BUS);}
|
||||
YY_BREAK
|
||||
case 19:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=MMIO; return(BUS);}
|
||||
{yylval.number=GENERIC; return(BUS);}
|
||||
YY_BREAK
|
||||
case 20:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=SPI; return(BUS);}
|
||||
{yylval.number=MMIO; return(BUS);}
|
||||
YY_BREAK
|
||||
case 21:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=USB; return(BUS);}
|
||||
{yylval.number=SPI; return(BUS);}
|
||||
YY_BREAK
|
||||
case 22:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=IRQ; return(RESOURCE);}
|
||||
{yylval.number=USB; return(BUS);}
|
||||
YY_BREAK
|
||||
case 23:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=DRQ; return(RESOURCE);}
|
||||
{yylval.number=IRQ; return(RESOURCE);}
|
||||
YY_BREAK
|
||||
case 24:
|
||||
YY_RULE_SETUP
|
||||
{yylval.number=IO; return(RESOURCE);}
|
||||
{yylval.number=DRQ; return(RESOURCE);}
|
||||
YY_BREAK
|
||||
case 25:
|
||||
YY_RULE_SETUP
|
||||
{return(IOAPIC_IRQ);}
|
||||
{yylval.number=IO; return(RESOURCE);}
|
||||
YY_BREAK
|
||||
case 26:
|
||||
YY_RULE_SETUP
|
||||
{return(INHERIT);}
|
||||
{return(IOAPIC_IRQ);}
|
||||
YY_BREAK
|
||||
case 27:
|
||||
YY_RULE_SETUP
|
||||
{return(SUBSYSTEMID);}
|
||||
{return(INHERIT);}
|
||||
YY_BREAK
|
||||
case 28:
|
||||
YY_RULE_SETUP
|
||||
{return(END);}
|
||||
{return(SUBSYSTEMID);}
|
||||
YY_BREAK
|
||||
case 29:
|
||||
YY_RULE_SETUP
|
||||
{return(SLOT_DESC);}
|
||||
{return(END);}
|
||||
YY_BREAK
|
||||
case 30:
|
||||
YY_RULE_SETUP
|
||||
{return(EQUALS);}
|
||||
{return(SLOT_DESC);}
|
||||
YY_BREAK
|
||||
case 31:
|
||||
YY_RULE_SETUP
|
||||
{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
|
||||
{return(EQUALS);}
|
||||
YY_BREAK
|
||||
case 32:
|
||||
YY_RULE_SETUP
|
||||
|
@ -980,12 +973,11 @@ YY_RULE_SETUP
|
|||
YY_BREAK
|
||||
case 34:
|
||||
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 35:
|
||||
/* rule 35 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 36:
|
||||
/* rule 36 can match eol */
|
||||
|
@ -993,10 +985,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 37:
|
||||
/* rule 37 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 38:
|
||||
YY_RULE_SETUP
|
||||
{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
|
||||
YY_BREAK
|
||||
case 38:
|
||||
case 39:
|
||||
YY_RULE_SETUP
|
||||
ECHO;
|
||||
YY_BREAK
|
||||
|
@ -1144,7 +1141,7 @@ static int yy_get_next_buffer (void)
|
|||
{
|
||||
char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
|
||||
char *source = (yytext_ptr);
|
||||
yy_size_t number_to_move, i;
|
||||
int number_to_move, i;
|
||||
int ret_val;
|
||||
|
||||
if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
|
||||
|
@ -1173,7 +1170,7 @@ static int yy_get_next_buffer (void)
|
|||
/* Try to read more data. */
|
||||
|
||||
/* First move last chars to start of buffer. */
|
||||
number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
|
||||
number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
|
||||
|
||||
for ( i = 0; i < number_to_move; ++i )
|
||||
*(dest++) = *(source++);
|
||||
|
@ -1209,7 +1206,8 @@ 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,(yy_size_t) (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. */
|
||||
|
@ -1255,12 +1253,15 @@ static int yy_get_next_buffer (void)
|
|||
else
|
||||
ret_val = EOB_ACT_CONTINUE_SCAN;
|
||||
|
||||
if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
|
||||
if (((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,(yy_size_t) 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()" );
|
||||
/* "- 2" to take care of EOB's */
|
||||
YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
|
||||
}
|
||||
|
||||
(yy_n_chars) += number_to_move;
|
||||
|
@ -1292,10 +1293,10 @@ 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 >= 160 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
if ( yy_current_state >= 168 )
|
||||
yy_c = yy_meta[yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
|
||||
}
|
||||
|
||||
return yy_current_state;
|
||||
|
@ -1320,11 +1321,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 >= 160 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
if ( yy_current_state >= 168 )
|
||||
yy_c = yy_meta[yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
|
||||
yy_is_jam = (yy_current_state == 159);
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
|
||||
yy_is_jam = (yy_current_state == 167);
|
||||
|
||||
return yy_is_jam ? 0 : yy_current_state;
|
||||
}
|
||||
|
@ -1394,7 +1395,7 @@ static int yy_get_next_buffer (void)
|
|||
|
||||
else
|
||||
{ /* need more input */
|
||||
int offset = (yy_c_buf_p) - (yytext_ptr);
|
||||
int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
|
||||
++(yy_c_buf_p);
|
||||
|
||||
switch ( yy_get_next_buffer( ) )
|
||||
|
@ -1666,7 +1667,7 @@ void yypop_buffer_state (void)
|
|||
*/
|
||||
static void yyensure_buffer_stack (void)
|
||||
{
|
||||
int num_to_alloc;
|
||||
yy_size_t num_to_alloc;
|
||||
|
||||
if (!(yy_buffer_stack)) {
|
||||
|
||||
|
@ -1750,7 +1751,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
|
|||
* @note If you want to scan bytes that may contain NUL values, then use
|
||||
* yy_scan_bytes() instead.
|
||||
*/
|
||||
YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
|
||||
YY_BUFFER_STATE yy_scan_string (const char * yystr )
|
||||
{
|
||||
|
||||
return yy_scan_bytes( yystr, (int) strlen(yystr) );
|
||||
|
@ -1763,7 +1764,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
|
|||
*
|
||||
* @return the newly allocated buffer state object.
|
||||
*/
|
||||
YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
|
||||
YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
|
||||
{
|
||||
YY_BUFFER_STATE b;
|
||||
char *buf;
|
||||
|
@ -1797,9 +1798,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
|
|||
#define YY_EXIT_FAILURE 2
|
||||
#endif
|
||||
|
||||
static void yynoreturn yy_fatal_error (yyconst char* msg )
|
||||
static void yynoreturn yy_fatal_error (const char* msg )
|
||||
{
|
||||
(void) fprintf( stderr, "%s\n", msg );
|
||||
fprintf( stderr, "%s\n", msg );
|
||||
exit( YY_EXIT_FAILURE );
|
||||
}
|
||||
|
||||
|
@ -1810,7 +1811,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg )
|
|||
do \
|
||||
{ \
|
||||
/* Undo effects of setting up yytext. */ \
|
||||
yy_size_t yyless_macro_arg = (n); \
|
||||
int yyless_macro_arg = (n); \
|
||||
YY_LESS_LINENO(yyless_macro_arg);\
|
||||
yytext[yyleng] = (yy_hold_char); \
|
||||
(yy_c_buf_p) = yytext + yyless_macro_arg; \
|
||||
|
@ -1955,7 +1956,7 @@ int yylex_destroy (void)
|
|||
*/
|
||||
|
||||
#ifndef yytext_ptr
|
||||
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
|
||||
static void yy_flex_strncpy (char* s1, const char * s2, int n )
|
||||
{
|
||||
|
||||
int i;
|
||||
|
@ -1965,7 +1966,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
|
|||
#endif
|
||||
|
||||
#ifdef YY_NEED_STRLEN
|
||||
static int yy_flex_strlen (yyconst char * s )
|
||||
static int yy_flex_strlen (const char * s )
|
||||
{
|
||||
int n;
|
||||
for ( n = 0; s[n]; ++n )
|
||||
|
|
|
@ -516,6 +516,7 @@ struct device *new_device(struct bus *parent,
|
|||
|
||||
new_d->enabled = status & 0x01;
|
||||
new_d->hidden = (status >> 1) & 0x01;
|
||||
new_d->mandatory = (status >> 2) & 0x01;
|
||||
new_d->chip_instance = chip_instance;
|
||||
chip_instance->ref_count++;
|
||||
|
||||
|
@ -810,6 +811,7 @@ static void pass1(FILE *fil, FILE *head, struct device *ptr, struct device *next
|
|||
fprintf(fil, "},\n");
|
||||
fprintf(fil, "\t.enabled = %d,\n", ptr->enabled);
|
||||
fprintf(fil, "\t.hidden = %d,\n", ptr->hidden);
|
||||
fprintf(fil, "\t.mandatory = %d,\n", ptr->mandatory);
|
||||
fprintf(fil, "\t.on_mainboard = 1,\n");
|
||||
if (ptr->subsystem_vendor > 0)
|
||||
fprintf(fil, "\t.subsystem_vendor = 0x%04x,\n",
|
||||
|
|
|
@ -104,6 +104,8 @@ struct device {
|
|||
/* Indicates device status (enabled / hidden or not). */
|
||||
int enabled;
|
||||
int hidden;
|
||||
/* non-zero if the device should be included in all cases */
|
||||
int mandatory;
|
||||
|
||||
/* Subsystem IDs for the device. */
|
||||
int subsystem_vendor;
|
||||
|
|
|
@ -29,7 +29,8 @@ device {return(DEVICE);}
|
|||
register {return(REGISTER);}
|
||||
on {yylval.number=1; return(BOOL);}
|
||||
off {yylval.number=0; return(BOOL);}
|
||||
hidden {yylval.number=3; return(HIDDEN);}
|
||||
hidden {yylval.number=3; return(STATUS);}
|
||||
mandatory {yylval.number=5; return(STATUS);}
|
||||
pci {yylval.number=PCI; return(BUS);}
|
||||
ioapic {yylval.number=IOAPIC; return(BUS);}
|
||||
pnp {yylval.number=PNP; return(BUS);}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* A Bison parser, made by GNU Bison 3.0.5. */
|
||||
/* A Bison parser, made by GNU Bison 3.0.4. */
|
||||
|
||||
/* Bison implementation for Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
|
||||
Copyright (C) 1984, 1989-1990, 2000-2015 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.5"
|
||||
#define YYBISON_VERSION "3.0.4"
|
||||
|
||||
/* Skeleton name. */
|
||||
#define YYSKELETON_NAME "yacc.c"
|
||||
|
@ -109,8 +109,8 @@ static struct chip_instance *cur_chip_instance;
|
|||
|
||||
/* In a future release of Bison, this section will be replaced
|
||||
by #include "sconfig.tab.h_shipped". */
|
||||
#ifndef YY_YY_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
|
||||
# define YY_YY_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
|
||||
#ifndef YY_YY_HOME_RMINNICH_PROJECTS_LINUXBOOT_COREBOOTNERF_GITHUBCOREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
|
||||
# define YY_YY_HOME_RMINNICH_PROJECTS_LINUXBOOT_COREBOOTNERF_GITHUBCOREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
|
||||
/* Debug traces. */
|
||||
#ifndef YYDEBUG
|
||||
# define YYDEBUG 0
|
||||
|
@ -128,34 +128,35 @@ extern int yydebug;
|
|||
DEVICE = 259,
|
||||
REGISTER = 260,
|
||||
BOOL = 261,
|
||||
HIDDEN = 262,
|
||||
BUS = 263,
|
||||
RESOURCE = 264,
|
||||
END = 265,
|
||||
EQUALS = 266,
|
||||
HEX = 267,
|
||||
STRING = 268,
|
||||
PCI = 269,
|
||||
PNP = 270,
|
||||
I2C = 271,
|
||||
APIC = 272,
|
||||
CPU_CLUSTER = 273,
|
||||
CPU = 274,
|
||||
DOMAIN = 275,
|
||||
IRQ = 276,
|
||||
DRQ = 277,
|
||||
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
|
||||
STATUS = 262,
|
||||
MANDATORY = 263,
|
||||
BUS = 264,
|
||||
RESOURCE = 265,
|
||||
END = 266,
|
||||
EQUALS = 267,
|
||||
HEX = 268,
|
||||
STRING = 269,
|
||||
PCI = 270,
|
||||
PNP = 271,
|
||||
I2C = 272,
|
||||
APIC = 273,
|
||||
CPU_CLUSTER = 274,
|
||||
CPU = 275,
|
||||
DOMAIN = 276,
|
||||
IRQ = 277,
|
||||
DRQ = 278,
|
||||
SLOT_DESC = 279,
|
||||
IO = 280,
|
||||
NUMBER = 281,
|
||||
SUBSYSTEMID = 282,
|
||||
INHERIT = 283,
|
||||
IOAPIC_IRQ = 284,
|
||||
IOAPIC = 285,
|
||||
PCIINT = 286,
|
||||
GENERIC = 287,
|
||||
SPI = 288,
|
||||
USB = 289,
|
||||
MMIO = 290
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -184,7 +185,7 @@ extern YYSTYPE yylval;
|
|||
|
||||
int yyparse (void);
|
||||
|
||||
#endif /* !YY_YY_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */
|
||||
#endif /* !YY_YY_HOME_RMINNICH_PROJECTS_LINUXBOOT_COREBOOTNERF_GITHUBCOREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */
|
||||
|
||||
/* Copy the second part of user declarations. */
|
||||
|
||||
|
@ -430,10 +431,10 @@ union yyalloc
|
|||
/* YYFINAL -- State number of the termination state. */
|
||||
#define YYFINAL 3
|
||||
/* YYLAST -- Last index in YYTABLE. */
|
||||
#define YYLAST 43
|
||||
#define YYLAST 40
|
||||
|
||||
/* YYNTOKENS -- Number of terminals. */
|
||||
#define YYNTOKENS 35
|
||||
#define YYNTOKENS 36
|
||||
/* YYNNTS -- Number of nonterminals. */
|
||||
#define YYNNTS 15
|
||||
/* YYNRULES -- Number of rules. */
|
||||
|
@ -444,7 +445,7 @@ union yyalloc
|
|||
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
|
||||
by yylex, with out-of-bounds checking. */
|
||||
#define YYUNDEFTOK 2
|
||||
#define YYMAXUTOK 289
|
||||
#define YYMAXUTOK 290
|
||||
|
||||
#define YYTRANSLATE(YYX) \
|
||||
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
|
||||
|
@ -481,7 +482,8 @@ 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, 34
|
||||
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
|
||||
35
|
||||
};
|
||||
|
||||
#if YYDEBUG
|
||||
|
@ -500,12 +502,12 @@ static const yytype_uint8 yyrline[] =
|
|||
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",
|
||||
"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",
|
||||
"STATUS", "MANDATORY", "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",
|
||||
"$accept", "devtree", "$@1", "chipchildren", "devicechildren", "chip",
|
||||
"@2", "device", "@3", "status", "resource", "registers", "subsystemid",
|
||||
"ioapic_irq", "smbios_slot_desc", YY_NULLPTR
|
||||
};
|
||||
#endif
|
||||
|
@ -518,7 +520,7 @@ 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, 289
|
||||
285, 286, 287, 288, 289, 290
|
||||
};
|
||||
# endif
|
||||
|
||||
|
@ -536,11 +538,11 @@ static const yytype_uint16 yytoknum[] =
|
|||
STATE-NUM. */
|
||||
static const yytype_int8 yypact[] =
|
||||
{
|
||||
-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
|
||||
-12, 6, 9, -12, -1, -12, -12, -12, 0, 5,
|
||||
1, -12, -12, -12, -12, -10, 7, 3, 8, -12,
|
||||
-12, -12, -12, -12, -3, -9, -12, 11, 2, 4,
|
||||
-12, -12, -12, -12, -12, -12, 15, 17, 10, -11,
|
||||
12, 18, -5, 13, -12, 19, -12, -12, -12
|
||||
};
|
||||
|
||||
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
|
||||
|
@ -558,7 +560,7 @@ static const yytype_uint8 yydefact[] =
|
|||
/* YYPGOTO[NTERM-NUM]. */
|
||||
static const yytype_int8 yypgoto[] =
|
||||
{
|
||||
-12, -12, -12, -12, -12, -6, -12, 19, -12, -12,
|
||||
-12, -12, -12, -12, -12, -6, -12, 16, -12, -12,
|
||||
-12, -12, -12, -12, -12
|
||||
};
|
||||
|
||||
|
@ -574,39 +576,39 @@ static const yytype_int8 yydefgoto[] =
|
|||
number is the opposite. If YYTABLE_NINF, syntax error. */
|
||||
static const yytype_uint8 yytable[] =
|
||||
{
|
||||
4, 9, 12, 4, 9, 10, 25, 26, 19, 20,
|
||||
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
|
||||
4, 9, 12, 4, 9, 10, 3, 25, 26, 19,
|
||||
20, 11, 4, 6, 15, 16, 17, 36, 30, 18,
|
||||
43, 27, 22, 46, 28, 37, 29, 40, 38, 0,
|
||||
39, 41, 45, 48, 0, 0, 42, 0, 44, 47,
|
||||
31
|
||||
};
|
||||
|
||||
static const yytype_int8 yycheck[] =
|
||||
{
|
||||
3, 4, 8, 3, 4, 5, 9, 10, 6, 7,
|
||||
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
|
||||
3, 4, 8, 3, 4, 5, 0, 10, 11, 6,
|
||||
7, 11, 3, 14, 9, 14, 26, 26, 24, 12,
|
||||
31, 24, 14, 28, 27, 14, 29, 12, 26, -1,
|
||||
26, 14, 14, 14, -1, -1, 26, -1, 26, 26,
|
||||
24
|
||||
};
|
||||
|
||||
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
||||
symbol of state STATE-NUM. */
|
||||
static const yytype_uint8 yystos[] =
|
||||
{
|
||||
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
|
||||
0, 37, 38, 0, 3, 41, 14, 42, 39, 4,
|
||||
5, 11, 41, 43, 47, 9, 14, 26, 12, 6,
|
||||
7, 45, 14, 44, 40, 10, 11, 24, 27, 29,
|
||||
41, 43, 46, 48, 49, 50, 26, 14, 26, 26,
|
||||
12, 14, 26, 31, 26, 14, 28, 26, 14
|
||||
};
|
||||
|
||||
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
|
||||
static const yytype_uint8 yyr1[] =
|
||||
{
|
||||
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
|
||||
0, 36, 38, 37, 39, 39, 39, 39, 40, 40,
|
||||
40, 40, 40, 40, 40, 42, 41, 44, 43, 45,
|
||||
45, 46, 47, 48, 48, 49, 50, 50, 50
|
||||
};
|
||||
|
||||
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
|
||||
|
@ -975,7 +977,6 @@ 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"));
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* A Bison parser, made by GNU Bison 3.0.5. */
|
||||
/* A Bison parser, made by GNU Bison 3.0.4. */
|
||||
|
||||
/* Bison interface for Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
|
||||
Copyright (C) 1984, 1989-1990, 2000-2015 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
|
||||
|
@ -30,8 +30,8 @@
|
|||
This special exception was added by the Free Software Foundation in
|
||||
version 2.2 of Bison. */
|
||||
|
||||
#ifndef YY_YY_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
|
||||
# define YY_YY_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
|
||||
#ifndef YY_YY_HOME_RMINNICH_PROJECTS_LINUXBOOT_COREBOOTNERF_GITHUBCOREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
|
||||
# define YY_YY_HOME_RMINNICH_PROJECTS_LINUXBOOT_COREBOOTNERF_GITHUBCOREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
|
||||
/* Debug traces. */
|
||||
#ifndef YYDEBUG
|
||||
# define YYDEBUG 0
|
||||
|
@ -49,34 +49,35 @@ extern int yydebug;
|
|||
DEVICE = 259,
|
||||
REGISTER = 260,
|
||||
BOOL = 261,
|
||||
HIDDEN = 262,
|
||||
BUS = 263,
|
||||
RESOURCE = 264,
|
||||
END = 265,
|
||||
EQUALS = 266,
|
||||
HEX = 267,
|
||||
STRING = 268,
|
||||
PCI = 269,
|
||||
PNP = 270,
|
||||
I2C = 271,
|
||||
APIC = 272,
|
||||
CPU_CLUSTER = 273,
|
||||
CPU = 274,
|
||||
DOMAIN = 275,
|
||||
IRQ = 276,
|
||||
DRQ = 277,
|
||||
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
|
||||
STATUS = 262,
|
||||
MANDATORY = 263,
|
||||
BUS = 264,
|
||||
RESOURCE = 265,
|
||||
END = 266,
|
||||
EQUALS = 267,
|
||||
HEX = 268,
|
||||
STRING = 269,
|
||||
PCI = 270,
|
||||
PNP = 271,
|
||||
I2C = 272,
|
||||
APIC = 273,
|
||||
CPU_CLUSTER = 274,
|
||||
CPU = 275,
|
||||
DOMAIN = 276,
|
||||
IRQ = 277,
|
||||
DRQ = 278,
|
||||
SLOT_DESC = 279,
|
||||
IO = 280,
|
||||
NUMBER = 281,
|
||||
SUBSYSTEMID = 282,
|
||||
INHERIT = 283,
|
||||
IOAPIC_IRQ = 284,
|
||||
IOAPIC = 285,
|
||||
PCIINT = 286,
|
||||
GENERIC = 287,
|
||||
SPI = 288,
|
||||
USB = 289,
|
||||
MMIO = 290
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -105,4 +106,4 @@ extern YYSTYPE yylval;
|
|||
|
||||
int yyparse (void);
|
||||
|
||||
#endif /* !YY_YY_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */
|
||||
#endif /* !YY_YY_HOME_RMINNICH_PROJECTS_LINUXBOOT_COREBOOTNERF_GITHUBCOREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */
|
||||
|
|
|
@ -31,7 +31,7 @@ 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 SLOT_DESC IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO
|
||||
%token CHIP DEVICE REGISTER BOOL STATUS MANDATORY 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;
|
||||
|
||||
|
@ -56,7 +56,7 @@ device: DEVICE BUS NUMBER /* == devnum */ status {
|
|||
cur_parent = $<dev>5->parent;
|
||||
};
|
||||
|
||||
status: BOOL | HIDDEN;
|
||||
status: BOOL | STATUS ;
|
||||
|
||||
resource: RESOURCE NUMBER /* == resnum */ EQUALS NUMBER /* == resval */
|
||||
{ add_resource(cur_parent, $<number>1, strtol($<string>2, NULL, 0), strtol($<string>4, NULL, 0)); } ;
|
||||
|
|
Loading…
Reference in New Issue