diff options
Diffstat (limited to 'util/sconfig')
-rw-r--r-- | util/sconfig/lex.yy.c_shipped | 368 | ||||
-rw-r--r-- | util/sconfig/main.c | 47 | ||||
-rw-r--r-- | util/sconfig/sconfig.h | 10 | ||||
-rw-r--r-- | util/sconfig/sconfig.l | 1 | ||||
-rw-r--r-- | util/sconfig/sconfig.tab.c_shipped | 312 | ||||
-rw-r--r-- | util/sconfig/sconfig.tab.h_shipped | 11 | ||||
-rw-r--r-- | util/sconfig/sconfig.y | 8 |
7 files changed, 413 insertions, 344 deletions
diff --git a/util/sconfig/lex.yy.c_shipped b/util/sconfig/lex.yy.c_shipped index 647ec3d796..3e2bb158c5 100644 --- a/util/sconfig/lex.yy.c_shipped +++ b/util/sconfig/lex.yy.c_shipped @@ -349,8 +349,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 50 -#define YY_END_OF_BUFFER 51 +#define YY_NUM_RULES 51 +#define YY_END_OF_BUFFER 52 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -358,31 +358,31 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[210] = +static const flex_int16_t yy_accept[211] = { 0, - 0, 0, 51, 49, 1, 3, 49, 49, 49, 44, - 44, 41, 45, 49, 45, 45, 45, 45, 45, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 42, - 49, 1, 3, 49, 0, 49, 49, 0, 2, 44, - 45, 49, 49, 49, 9, 49, 49, 45, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 34, 49, - 49, 49, 49, 49, 15, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 48, 48, 49, 0, 43, 49, - 49, 49, 25, 49, 49, 33, 38, 49, 49, 49, - 49, 49, 22, 49, 49, 32, 49, 49, 49, 16, - - 49, 19, 21, 49, 8, 49, 49, 29, 49, 30, - 7, 49, 0, 46, 49, 4, 49, 49, 49, 49, - 49, 49, 31, 49, 49, 49, 49, 49, 28, 49, - 49, 49, 49, 49, 47, 47, 6, 49, 49, 49, - 12, 49, 49, 49, 49, 49, 23, 49, 49, 14, - 49, 49, 49, 49, 5, 26, 49, 49, 17, 49, - 20, 49, 13, 49, 49, 49, 49, 49, 27, 36, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 10, - 49, 49, 49, 49, 11, 49, 18, 49, 49, 49, - 49, 35, 49, 49, 49, 24, 49, 49, 37, 49, - - 49, 49, 49, 49, 49, 40, 49, 39, 0 + 0, 0, 52, 50, 1, 3, 50, 50, 50, 45, + 45, 42, 46, 50, 46, 46, 46, 46, 46, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 43, + 50, 1, 3, 50, 0, 50, 50, 0, 2, 45, + 46, 50, 50, 50, 10, 50, 50, 46, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 35, 50, + 50, 50, 50, 50, 16, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 49, 49, 50, 0, 44, 50, + 50, 50, 26, 50, 50, 34, 39, 50, 50, 50, + 50, 50, 23, 50, 50, 33, 50, 50, 50, 17, + + 7, 50, 20, 22, 50, 9, 50, 50, 30, 50, + 31, 8, 50, 0, 47, 50, 4, 50, 50, 50, + 50, 50, 50, 32, 50, 50, 50, 50, 50, 29, + 50, 50, 50, 50, 50, 48, 48, 6, 50, 50, + 50, 13, 50, 50, 50, 50, 50, 24, 50, 50, + 15, 50, 50, 50, 50, 5, 27, 50, 50, 18, + 50, 21, 50, 14, 50, 50, 50, 50, 50, 28, + 37, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 11, 50, 50, 50, 50, 12, 50, 19, 50, 50, + 50, 50, 36, 50, 50, 50, 25, 50, 50, 38, + + 50, 50, 50, 50, 50, 50, 41, 50, 40, 0 } ; static const YY_CHAR yy_ec[256] = @@ -425,140 +425,140 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[217] = +static const flex_int16_t yy_base[218] = { 0, - 0, 0, 282, 0, 279, 283, 277, 39, 43, 40, - 241, 0, 46, 264, 56, 60, 64, 67, 72, 56, - 252, 74, 259, 39, 70, 59, 254, 77, 241, 0, - 0, 271, 283, 108, 267, 112, 116, 268, 283, 0, - 113, 116, 255, 244, 0, 243, 232, 122, 239, 234, - 244, 242, 246, 233, 235, 239, 239, 233, 239, 224, - 224, 225, 227, 229, 0, 216, 224, 218, 218, 117, - 228, 220, 226, 87, 0, 283, 139, 238, 0, 231, - 224, 210, 223, 213, 220, 0, 0, 210, 216, 213, - 204, 212, 0, 210, 200, 0, 204, 208, 198, 0, - - 201, 0, 0, 207, 0, 199, 198, 0, 189, 0, - 0, 216, 215, 0, 186, 0, 199, 198, 191, 195, - 185, 181, 0, 191, 179, 185, 190, 191, 0, 178, - 185, 172, 175, 164, 0, 283, 0, 176, 180, 172, - 0, 171, 173, 169, 171, 176, 0, 160, 165, 0, - 158, 158, 157, 154, 0, 0, 166, 168, 0, 152, - 169, 155, 0, 162, 166, 147, 147, 154, 0, 0, - 153, 145, 144, 68, 154, 140, 150, 140, 132, 0, - 136, 130, 128, 133, 0, 122, 0, 116, 122, 125, - 117, 0, 132, 113, 126, 0, 120, 127, 0, 104, - - 106, 94, 78, 65, 37, 0, 31, 0, 283, 42, - 158, 160, 162, 164, 166, 168 + 0, 0, 283, 0, 280, 284, 278, 39, 43, 40, + 242, 0, 46, 265, 56, 60, 64, 67, 72, 56, + 253, 74, 260, 39, 70, 59, 255, 77, 242, 0, + 0, 272, 284, 108, 268, 112, 116, 269, 284, 0, + 113, 116, 256, 245, 0, 244, 233, 122, 240, 235, + 245, 243, 247, 234, 236, 240, 240, 234, 240, 225, + 225, 226, 228, 230, 0, 106, 226, 220, 220, 119, + 230, 222, 228, 87, 0, 284, 141, 240, 0, 233, + 226, 212, 225, 215, 222, 0, 0, 212, 218, 215, + 206, 214, 0, 212, 202, 0, 206, 210, 200, 0, + + 0, 203, 0, 0, 209, 0, 201, 200, 0, 191, + 0, 0, 218, 217, 0, 188, 0, 201, 200, 193, + 197, 187, 183, 0, 193, 181, 187, 192, 193, 0, + 180, 187, 174, 177, 166, 0, 284, 0, 178, 182, + 174, 0, 173, 175, 171, 173, 178, 0, 162, 167, + 0, 160, 160, 159, 156, 0, 0, 168, 170, 0, + 154, 171, 157, 0, 164, 168, 149, 149, 156, 0, + 0, 155, 147, 146, 68, 156, 142, 152, 142, 134, + 0, 151, 145, 130, 135, 0, 124, 0, 118, 124, + 127, 119, 0, 134, 115, 128, 0, 122, 129, 0, + + 104, 106, 94, 78, 65, 37, 0, 31, 0, 284, + 42, 158, 160, 162, 164, 166, 168 } ; -static const flex_int16_t yy_def[217] = +static const flex_int16_t yy_def[218] = { 0, - 209, 1, 209, 210, 209, 209, 210, 211, 212, 210, - 10, 210, 10, 210, 10, 10, 10, 10, 10, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 209, 209, 211, 213, 214, 212, 215, 209, 10, - 10, 10, 210, 210, 210, 210, 210, 10, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 209, 214, 216, 42, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 209, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 209, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - - 210, 210, 210, 210, 210, 210, 210, 210, 0, 209, - 209, 209, 209, 209, 209, 209 + 210, 1, 210, 211, 210, 210, 211, 212, 213, 211, + 10, 211, 10, 211, 10, 10, 10, 10, 10, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 210, 210, 212, 214, 215, 213, 216, 210, 10, + 10, 10, 211, 211, 211, 211, 211, 10, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 210, 215, 217, 42, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 210, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 210, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + + 211, 211, 211, 211, 211, 211, 211, 211, 211, 0, + 210, 210, 210, 210, 210, 210, 210 } ; -static const flex_int16_t yy_nxt[324] = +static const flex_int16_t yy_nxt[325] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 10, 12, 13, 13, 14, 4, 4, 4, 15, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 4, 25, 26, 4, 27, 28, 4, 29, 4, 4, 4, 4, 30, - 35, 35, 31, 36, 38, 39, 40, 40, 40, 208, + 35, 35, 31, 36, 38, 39, 40, 40, 40, 209, 41, 41, 41, 41, 41, 62, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 63, 41, 41, 41, 207, + 41, 41, 41, 41, 41, 63, 41, 41, 41, 208, 41, 41, 41, 41, 41, 41, 54, 67, 41, 41, - 41, 44, 57, 46, 48, 55, 68, 181, 45, 47, - 69, 64, 49, 206, 51, 50, 52, 65, 205, 66, - - 182, 58, 59, 71, 110, 60, 72, 111, 53, 35, - 35, 73, 75, 78, 78, 204, 31, 38, 39, 41, - 41, 41, 79, 79, 79, 203, 79, 79, 41, 41, - 41, 202, 79, 79, 79, 79, 79, 79, 105, 106, - 78, 78, 201, 112, 200, 199, 198, 197, 196, 195, - 194, 193, 192, 191, 190, 189, 188, 84, 34, 34, + 41, 44, 57, 46, 48, 55, 68, 182, 45, 47, + 69, 64, 49, 207, 51, 50, 52, 65, 206, 66, + + 183, 58, 59, 71, 111, 60, 72, 112, 53, 35, + 35, 73, 75, 78, 78, 205, 31, 38, 39, 41, + 41, 41, 79, 79, 79, 204, 79, 79, 41, 41, + 41, 203, 79, 79, 79, 79, 79, 79, 101, 102, + 106, 107, 78, 78, 202, 113, 201, 200, 199, 198, + 197, 196, 195, 194, 193, 192, 191, 84, 34, 34, 37, 37, 35, 35, 77, 77, 38, 38, 78, 78, - 187, 186, 185, 184, 183, 180, 179, 178, 177, 176, - 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, - 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, - - 155, 154, 153, 152, 151, 150, 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, 109, 108, 107, 104, 103, 102, 101, - 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, - 90, 89, 88, 87, 86, 85, 83, 82, 81, 80, - 39, 76, 32, 74, 70, 61, 56, 43, 42, 33, - 32, 209, 3, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209 + 190, 189, 188, 187, 186, 185, 184, 181, 180, 179, + 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, + 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, + + 158, 157, 156, 155, 154, 153, 152, 151, 150, 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, 110, 109, 108, 105, 104, + 103, 100, 99, 98, 97, 96, 95, 94, 93, 92, + 91, 90, 89, 88, 87, 86, 85, 83, 82, 81, + 80, 39, 76, 32, 74, 70, 61, 56, 43, 42, + 33, 32, 210, 3, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210 } ; -static const flex_int16_t yy_chk[324] = +static const flex_int16_t yy_chk[325] = { 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, 1, 1, - 8, 8, 210, 8, 9, 9, 10, 10, 10, 207, + 8, 8, 211, 8, 9, 9, 10, 10, 10, 208, 10, 10, 13, 13, 13, 24, 10, 10, 10, 10, - 10, 10, 15, 15, 15, 24, 16, 16, 16, 205, + 10, 10, 15, 15, 15, 24, 16, 16, 16, 206, 17, 17, 17, 18, 18, 18, 20, 26, 19, 19, - 19, 15, 22, 16, 17, 20, 26, 174, 15, 16, - 26, 25, 17, 204, 18, 17, 19, 25, 203, 25, - - 174, 22, 22, 28, 74, 22, 28, 74, 19, 34, - 34, 28, 34, 36, 36, 202, 36, 37, 37, 41, - 41, 41, 42, 42, 42, 201, 42, 42, 48, 48, - 48, 200, 42, 42, 42, 42, 42, 42, 70, 70, - 77, 77, 198, 77, 197, 195, 194, 193, 191, 190, - 189, 188, 186, 184, 183, 182, 181, 48, 211, 211, - 212, 212, 213, 213, 214, 214, 215, 215, 216, 216, - 179, 178, 177, 176, 175, 173, 172, 171, 168, 167, - 166, 165, 164, 162, 161, 160, 158, 157, 154, 153, - 152, 151, 149, 148, 146, 145, 144, 143, 142, 140, - - 139, 138, 134, 133, 132, 131, 130, 128, 127, 126, - 125, 124, 122, 121, 120, 119, 118, 117, 115, 113, - 112, 109, 107, 106, 104, 101, 99, 98, 97, 95, - 94, 92, 91, 90, 89, 88, 85, 84, 83, 82, - 81, 80, 78, 73, 72, 71, 69, 68, 67, 66, - 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, - 54, 53, 52, 51, 50, 49, 47, 46, 44, 43, - 38, 35, 32, 29, 27, 23, 21, 14, 11, 7, - 5, 3, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209 + 19, 15, 22, 16, 17, 20, 26, 175, 15, 16, + 26, 25, 17, 205, 18, 17, 19, 25, 204, 25, + + 175, 22, 22, 28, 74, 22, 28, 74, 19, 34, + 34, 28, 34, 36, 36, 203, 36, 37, 37, 41, + 41, 41, 42, 42, 42, 202, 42, 42, 48, 48, + 48, 201, 42, 42, 42, 42, 42, 42, 66, 66, + 70, 70, 77, 77, 199, 77, 198, 196, 195, 194, + 192, 191, 190, 189, 187, 185, 184, 48, 212, 212, + 213, 213, 214, 214, 215, 215, 216, 216, 217, 217, + 183, 182, 180, 179, 178, 177, 176, 174, 173, 172, + 169, 168, 167, 166, 165, 163, 162, 161, 159, 158, + 155, 154, 153, 152, 150, 149, 147, 146, 145, 144, + + 143, 141, 140, 139, 135, 134, 133, 132, 131, 129, + 128, 127, 126, 125, 123, 122, 121, 120, 119, 118, + 116, 114, 113, 110, 108, 107, 105, 102, 99, 98, + 97, 95, 94, 92, 91, 90, 89, 88, 85, 84, + 83, 82, 81, 80, 78, 73, 72, 71, 69, 68, + 67, 64, 63, 62, 61, 60, 59, 58, 57, 56, + 55, 54, 53, 52, 51, 50, 49, 47, 46, 44, + 43, 38, 35, 32, 29, 27, 23, 21, 14, 11, + 7, 5, 3, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210 } ; static yy_state_type yy_last_accepting_state; @@ -823,13 +823,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 >= 210 ) + if ( yy_current_state >= 211 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 283 ); + while ( yy_base[yy_current_state] != 284 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -881,7 +881,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -{return(REFERENCE);} +{return(OPS);} YY_BREAK case 8: YY_RULE_SETUP @@ -889,143 +889,143 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -{return(ASSOCIATION);} +{return(REFERENCE);} YY_BREAK case 10: YY_RULE_SETUP -{return(REGISTER);} +{return(ASSOCIATION);} YY_BREAK case 11: YY_RULE_SETUP -{return(FW_CONFIG_TABLE);} +{return(REGISTER);} YY_BREAK case 12: YY_RULE_SETUP -{return(FW_CONFIG_FIELD);} +{return(FW_CONFIG_TABLE);} YY_BREAK case 13: YY_RULE_SETUP -{return(FW_CONFIG_OPTION);} +{return(FW_CONFIG_FIELD);} YY_BREAK case 14: YY_RULE_SETUP -{return(FW_CONFIG_PROBE);} +{return(FW_CONFIG_OPTION);} YY_BREAK case 15: YY_RULE_SETUP -{yylval.number=1; return(BOOL);} +{return(FW_CONFIG_PROBE);} YY_BREAK case 16: YY_RULE_SETUP -{yylval.number=0; return(BOOL);} +{yylval.number=1; return(BOOL);} YY_BREAK case 17: YY_RULE_SETUP -{yylval.number=3; return(STATUS);} +{yylval.number=0; return(BOOL);} YY_BREAK case 18: YY_RULE_SETUP -{yylval.number=5; return(STATUS);} +{yylval.number=3; return(STATUS);} YY_BREAK case 19: YY_RULE_SETUP -{yylval.number=PCI; return(BUS);} +{yylval.number=5; return(STATUS);} YY_BREAK case 20: YY_RULE_SETUP -{yylval.number=IOAPIC; return(BUS);} +{yylval.number=PCI; return(BUS);} YY_BREAK case 21: YY_RULE_SETUP -{yylval.number=PNP; return(BUS);} +{yylval.number=IOAPIC; return(BUS);} YY_BREAK case 22: YY_RULE_SETUP -{yylval.number=I2C; return(BUS);} +{yylval.number=PNP; return(BUS);} YY_BREAK case 23: YY_RULE_SETUP -{yylval.number=APIC; return(BUS);} +{yylval.number=I2C; return(BUS);} YY_BREAK case 24: YY_RULE_SETUP -{yylval.number=CPU_CLUSTER; return(BUS);} +{yylval.number=APIC; return(BUS);} YY_BREAK case 25: YY_RULE_SETUP -{yylval.number=CPU; return(BUS);} +{yylval.number=CPU_CLUSTER; return(BUS);} YY_BREAK case 26: YY_RULE_SETUP -{yylval.number=DOMAIN; return(BUS);} +{yylval.number=CPU; return(BUS);} YY_BREAK case 27: YY_RULE_SETUP -{yylval.number=GENERIC; return(BUS);} +{yylval.number=DOMAIN; return(BUS);} YY_BREAK case 28: YY_RULE_SETUP -{yylval.number=MMIO; return(BUS);} +{yylval.number=GENERIC; return(BUS);} YY_BREAK case 29: YY_RULE_SETUP -{yylval.number=SPI; return(BUS);} +{yylval.number=MMIO; return(BUS);} YY_BREAK case 30: YY_RULE_SETUP -{yylval.number=USB; return(BUS);} +{yylval.number=SPI; return(BUS);} YY_BREAK case 31: YY_RULE_SETUP -{yylval.number=GPIO; return(BUS);} +{yylval.number=USB; return(BUS);} YY_BREAK case 32: YY_RULE_SETUP -{yylval.number=IRQ; return(RESOURCE);} +{yylval.number=GPIO; return(BUS);} YY_BREAK case 33: YY_RULE_SETUP -{yylval.number=DRQ; return(RESOURCE);} +{yylval.number=IRQ; return(RESOURCE);} YY_BREAK case 34: YY_RULE_SETUP -{yylval.number=IO; return(RESOURCE);} +{yylval.number=DRQ; return(RESOURCE);} YY_BREAK case 35: YY_RULE_SETUP -{return(IOAPIC_IRQ);} +{yylval.number=IO; return(RESOURCE);} YY_BREAK case 36: YY_RULE_SETUP -{return(INHERIT);} +{return(IOAPIC_IRQ);} YY_BREAK case 37: YY_RULE_SETUP -{return(SUBSYSTEMID);} +{return(INHERIT);} YY_BREAK case 38: YY_RULE_SETUP -{return(END);} +{return(SUBSYSTEMID);} YY_BREAK case 39: YY_RULE_SETUP -{return(SLOT_DESC);} +{return(END);} YY_BREAK case 40: YY_RULE_SETUP -{return(SMBIOS_DEV_INFO);} +{return(SLOT_DESC);} YY_BREAK case 41: YY_RULE_SETUP -{return(EQUALS);} +{return(SMBIOS_DEV_INFO);} YY_BREAK case 42: YY_RULE_SETUP -{return(PIPE);} +{return(EQUALS);} YY_BREAK case 43: YY_RULE_SETUP -{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);} +{return(PIPE);} YY_BREAK case 44: YY_RULE_SETUP @@ -1037,12 +1037,11 @@ YY_RULE_SETUP YY_BREAK case 46: 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 47: -/* rule 47 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 48: /* rule 48 can match eol */ @@ -1050,11 +1049,16 @@ 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 49: +/* rule 49 can match eol */ YY_RULE_SETUP -{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);} +{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);} YY_BREAK case 50: YY_RULE_SETUP +{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);} + YY_BREAK +case 51: +YY_RULE_SETUP ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): @@ -1353,7 +1357,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 >= 210 ) + if ( yy_current_state >= 211 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1381,11 +1385,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 >= 210 ) + if ( yy_current_state >= 211 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 209); + yy_is_jam = (yy_current_state == 210); return yy_is_jam ? 0 : yy_current_state; } diff --git a/util/sconfig/main.c b/util/sconfig/main.c index 6648254d0a..0833d388e5 100644 --- a/util/sconfig/main.c +++ b/util/sconfig/main.c @@ -148,6 +148,9 @@ struct queue_entry { struct queue_entry *prev; }; +/* Global list of all `struct device_operations` identifiers to declare. */ +static struct identifier *device_operations; + #define S_ALLOC(_s) s_alloc(__func__, _s) static void *s_alloc(const char *f, size_t s) @@ -696,6 +699,30 @@ static int emit_fw_config_probe(FILE *fil, struct device *dev) return 0; } +/* Enqueue identifier to list with head `*it`, if not already present. */ +void add_identifier(struct identifier **it, const char *id) +{ + for (; *it != NULL; it = &(*it)->next) { + if (!strcmp((*it)->id, id)) + return; + } + + *it = S_ALLOC(sizeof(**it)); + (*it)->id = id; +} + +void add_device_ops(struct bus *bus, char *ops_id) +{ + if (bus->dev->ops_id) { + printf("ERROR: Device operations may only be specified once,\n" + " found '%s', '%s'.\n", bus->dev->ops_id, ops_id); + exit(1); + } + + add_identifier(&device_operations, ops_id); + bus->dev->ops_id = ops_id; +} + /* * Allocate a new bus for the provided device. * - If this is the first bus being allocated under this device, then its id @@ -1262,10 +1289,13 @@ static void pass1(FILE *fil, FILE *head, struct device *ptr, struct device *next fprintf(fil, "#if !DEVTREE_EARLY\n"); /* - * ops field is set to default_dev_ops_root only for the root - * device. For all other devices, it is set by the driver at runtime. + * ops field can be set in the devicetree. If unspecified, it is set + * to default_dev_ops_root only for the root device, other devices + * get it set by the driver at runtime. */ - if (ptr == &base_root_dev) + if (ptr->ops_id) + fprintf(fil, "\t.ops = &%s,\n", ptr->ops_id); + else if (ptr == &base_root_dev) fprintf(fil, "\t.ops = &default_dev_ops_root,\n"); else fprintf(fil, "\t.ops = NULL,\n"); @@ -1477,6 +1507,12 @@ static void emit_chip_configs(FILE *fil) } } +static void emit_identifiers(FILE *fil, const char *decl, const struct identifier *it) +{ + for (; it != NULL; it = it->next) + fprintf(fil, "extern %s %s;\n", decl, it->id); +} + static void inherit_subsystem_ids(FILE *file, FILE *head, struct device *dev, struct device *next) { @@ -1854,6 +1890,10 @@ static void update_device(struct device *base_dev, struct device *override_dev) */ override_dev->chip_instance->base_chip_instance = get_chip_instance(base_dev); + /* Allow to override the ops of a device */ + if (override_dev->ops_id) + base_dev->ops_id = override_dev->ops_id; + /* * Now that the device properties are all copied over, look at each bus * of the override device and run override_devicetree in a recursive @@ -1970,6 +2010,7 @@ static void generate_outputc(FILE *f, const char *static_header) fprintf(f, "#include <fw_config.h>\n"); fprintf(f, "#include <%s>\n", static_header); emit_chip_headers(f, chip_header.next); + emit_identifiers(f, "struct device_operations", device_operations); fprintf(f, "\n#define STORAGE static __maybe_unused DEVTREE_CONST\n\n"); walk_device_tree(NULL, NULL, &base_root_dev, inherit_subsystem_ids); diff --git a/util/sconfig/sconfig.h b/util/sconfig/sconfig.h index 5b50cc0158..c2a43af5cf 100644 --- a/util/sconfig/sconfig.h +++ b/util/sconfig/sconfig.h @@ -57,6 +57,11 @@ struct fw_config_probe { struct fw_config_probe *next; }; +struct identifier { + const char *id; + struct identifier *next; +}; + struct chip; struct chip_instance { /* Monotonically increasing ID for each chip instance. */ @@ -165,6 +170,9 @@ struct device { /* Pointer to last bus under this device. */ struct bus *last_bus; + /* Global identifier of the ops for this device. */ + char *ops_id; + /* SMBIOS slot type */ char *smbios_slot_type; @@ -236,3 +244,5 @@ void add_fw_config_probe(struct bus *bus, const char *field, const char *option) void append_fw_config_bits(struct fw_config_field_bits **bits, unsigned int start_bit, unsigned int end_bit); + +void add_device_ops(struct bus *, char *ops_id); diff --git a/util/sconfig/sconfig.l b/util/sconfig/sconfig.l index 0997ff6444..5ff144b445 100644 --- a/util/sconfig/sconfig.l +++ b/util/sconfig/sconfig.l @@ -14,6 +14,7 @@ int linenum = 0; chip {return(CHIP);} device {return(DEVICE);} alias {return(ALIAS);} +ops {return(OPS);} use {return(REFERENCE);} ref {return(REFERENCE);} as {return(ASSOCIATION);} diff --git a/util/sconfig/sconfig.tab.c_shipped b/util/sconfig/sconfig.tab.c_shipped index c319a79527..3df31a721b 100644 --- a/util/sconfig/sconfig.tab.c_shipped +++ b/util/sconfig/sconfig.tab.c_shipped @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.8.1. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C @@ -46,10 +46,10 @@ USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ -#define YYBISON 30801 +#define YYBISON 30802 /* Bison version string. */ -#define YYBISON_VERSION "3.8.1" +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -156,38 +156,40 @@ enum yysymbol_kind_t YYSYMBOL_FW_CONFIG_OPTION = 43, /* FW_CONFIG_OPTION */ YYSYMBOL_FW_CONFIG_PROBE = 44, /* FW_CONFIG_PROBE */ YYSYMBOL_PIPE = 45, /* PIPE */ - YYSYMBOL_YYACCEPT = 46, /* $accept */ - YYSYMBOL_devtree = 47, /* devtree */ - YYSYMBOL_chipchild_nondev = 48, /* chipchild_nondev */ - YYSYMBOL_chipchild = 49, /* chipchild */ - YYSYMBOL_chipchildren = 50, /* chipchildren */ - YYSYMBOL_chipchildren_dev = 51, /* chipchildren_dev */ - YYSYMBOL_devicechildren = 52, /* devicechildren */ - YYSYMBOL_chip = 53, /* chip */ - YYSYMBOL_54_1 = 54, /* @1 */ - YYSYMBOL_device = 55, /* device */ - YYSYMBOL_56_2 = 56, /* @2 */ - YYSYMBOL_57_3 = 57, /* @3 */ - YYSYMBOL_alias = 58, /* alias */ - YYSYMBOL_status = 59, /* status */ - YYSYMBOL_resource = 60, /* resource */ - YYSYMBOL_reference = 61, /* reference */ - YYSYMBOL_registers = 62, /* registers */ - YYSYMBOL_subsystemid = 63, /* subsystemid */ - YYSYMBOL_ioapic_irq = 64, /* ioapic_irq */ - YYSYMBOL_smbios_slot_desc = 65, /* smbios_slot_desc */ - YYSYMBOL_smbios_dev_info = 66, /* smbios_dev_info */ - YYSYMBOL_fw_config_table = 67, /* fw_config_table */ - YYSYMBOL_fw_config_table_children = 68, /* fw_config_table_children */ - YYSYMBOL_fw_config_field_children = 69, /* fw_config_field_children */ - YYSYMBOL_fw_config_field_bits = 70, /* fw_config_field_bits */ - YYSYMBOL_fw_config_field_bits_repeating = 71, /* fw_config_field_bits_repeating */ - YYSYMBOL_fw_config_field = 72, /* fw_config_field */ - YYSYMBOL_73_4 = 73, /* $@4 */ - YYSYMBOL_74_5 = 74, /* $@5 */ - YYSYMBOL_75_6 = 75, /* $@6 */ - YYSYMBOL_fw_config_option = 76, /* fw_config_option */ - YYSYMBOL_fw_config_probe = 77 /* fw_config_probe */ + YYSYMBOL_OPS = 46, /* OPS */ + YYSYMBOL_YYACCEPT = 47, /* $accept */ + YYSYMBOL_devtree = 48, /* devtree */ + YYSYMBOL_chipchild_nondev = 49, /* chipchild_nondev */ + YYSYMBOL_chipchild = 50, /* chipchild */ + YYSYMBOL_chipchildren = 51, /* chipchildren */ + YYSYMBOL_chipchildren_dev = 52, /* chipchildren_dev */ + YYSYMBOL_devicechildren = 53, /* devicechildren */ + YYSYMBOL_chip = 54, /* chip */ + YYSYMBOL_55_1 = 55, /* @1 */ + YYSYMBOL_device = 56, /* device */ + YYSYMBOL_57_2 = 57, /* @2 */ + YYSYMBOL_58_3 = 58, /* @3 */ + YYSYMBOL_alias = 59, /* alias */ + YYSYMBOL_status = 60, /* status */ + YYSYMBOL_resource = 61, /* resource */ + YYSYMBOL_reference = 62, /* reference */ + YYSYMBOL_registers = 63, /* registers */ + YYSYMBOL_subsystemid = 64, /* subsystemid */ + YYSYMBOL_ioapic_irq = 65, /* ioapic_irq */ + YYSYMBOL_smbios_slot_desc = 66, /* smbios_slot_desc */ + YYSYMBOL_smbios_dev_info = 67, /* smbios_dev_info */ + YYSYMBOL_fw_config_table = 68, /* fw_config_table */ + YYSYMBOL_fw_config_table_children = 69, /* fw_config_table_children */ + YYSYMBOL_fw_config_field_children = 70, /* fw_config_field_children */ + YYSYMBOL_fw_config_field_bits = 71, /* fw_config_field_bits */ + YYSYMBOL_fw_config_field_bits_repeating = 72, /* fw_config_field_bits_repeating */ + YYSYMBOL_fw_config_field = 73, /* fw_config_field */ + YYSYMBOL_74_4 = 74, /* $@4 */ + YYSYMBOL_75_5 = 75, /* $@5 */ + YYSYMBOL_76_6 = 76, /* $@6 */ + YYSYMBOL_fw_config_option = 77, /* fw_config_option */ + YYSYMBOL_fw_config_probe = 78, /* fw_config_probe */ + YYSYMBOL_ops = 79 /* ops */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -515,19 +517,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 98 +#define YYLAST 101 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 46 +#define YYNTOKENS 47 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 32 +#define YYNNTS 33 /* YYNRULES -- Number of rules. */ -#define YYNRULES 60 +#define YYNRULES 62 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 105 +#define YYNSTATES 108 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 300 +#define YYMAXUTOK 301 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -571,7 +573,7 @@ static const yytype_int8 yytranslate[] = 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45 + 45, 46 }; #if YYDEBUG @@ -580,11 +582,11 @@ static const yytype_uint8 yyrline[] = { 0, 26, 26, 26, 26, 29, 29, 29, 30, 30, 31, 31, 32, 32, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 36, 36, 45, 45, 53, 53, - 61, 63, 67, 67, 69, 72, 75, 78, 81, 84, - 87, 90, 93, 96, 99, 103, 106, 106, 109, 109, - 112, 118, 118, 121, 120, 125, 125, 133, 133, 139, - 143 + 34, 34, 34, 34, 34, 36, 36, 45, 45, 53, + 53, 61, 63, 67, 67, 69, 72, 75, 78, 81, + 84, 87, 90, 93, 96, 99, 103, 106, 106, 109, + 109, 112, 118, 118, 121, 120, 125, 125, 133, 133, + 139, 143, 146 }; #endif @@ -607,15 +609,15 @@ static const char *const yytname[] = "SLOT_DESC", "SMBIOS_DEV_INFO", "IO", "NUMBER", "SUBSYSTEMID", "INHERIT", "IOAPIC_IRQ", "IOAPIC", "PCIINT", "GENERIC", "SPI", "USB", "MMIO", "GPIO", "FW_CONFIG_TABLE", "FW_CONFIG_FIELD", "FW_CONFIG_OPTION", - "FW_CONFIG_PROBE", "PIPE", "$accept", "devtree", "chipchild_nondev", - "chipchild", "chipchildren", "chipchildren_dev", "devicechildren", - "chip", "@1", "device", "@2", "@3", "alias", "status", "resource", - "reference", "registers", "subsystemid", "ioapic_irq", + "FW_CONFIG_PROBE", "PIPE", "OPS", "$accept", "devtree", + "chipchild_nondev", "chipchild", "chipchildren", "chipchildren_dev", + "devicechildren", "chip", "@1", "device", "@2", "@3", "alias", "status", + "resource", "reference", "registers", "subsystemid", "ioapic_irq", "smbios_slot_desc", "smbios_dev_info", "fw_config_table", "fw_config_table_children", "fw_config_field_children", "fw_config_field_bits", "fw_config_field_bits_repeating", "fw_config_field", "$@4", "$@5", "$@6", "fw_config_option", - "fw_config_probe", YY_NULLPTR + "fw_config_probe", "ops", YY_NULLPTR }; static const char * @@ -625,7 +627,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-45) +#define YYPACT_NINF (-57) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -639,17 +641,17 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int8 yypact[] = { - -45, 6, -45, 4, -45, -45, -45, -45, -12, 45, - -45, 15, -45, 11, 17, 18, 45, -3, -45, -45, - -45, -45, 16, 34, 23, 14, 46, -45, -45, 45, - 25, 19, -45, 10, 51, 42, 43, -45, -45, -45, - -45, -45, 31, -45, -7, -45, -45, -45, 49, 10, - -45, -45, -6, 25, 19, -45, -45, 50, -45, -45, - -45, -45, -45, -45, -2, 32, 0, -45, -45, -45, - 33, -45, 52, 38, 40, 41, 55, -45, -45, -45, - -45, -45, -45, -45, -45, -45, 12, 58, 57, 59, - 47, 44, 61, -45, 53, 63, -45, 54, 60, -45, - -45, 64, -45, -45, -45 + -57, 6, -57, 2, -57, -57, -57, -57, -12, 45, + -57, 4, -57, 11, 5, 7, 45, -3, -57, -57, + -57, -57, 21, 18, 25, 14, 34, -57, -57, 45, + 27, 16, -57, 44, 53, 46, 47, -57, -57, -57, + -57, -57, 32, -57, -7, -57, -57, -57, 49, 44, + -57, -57, -6, 27, 16, -57, -57, 50, -57, -57, + -57, -57, -57, -57, -2, 38, 0, -57, -57, -57, + 39, -57, 54, 40, 42, 43, 57, 58, -57, -57, + -57, -57, -57, -57, -57, -57, -57, -57, 12, 61, + 60, 62, 48, 51, 63, -57, -57, 52, 64, -57, + 56, 55, -57, -57, 66, -57, -57, -57 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -657,35 +659,35 @@ static const yytype_int8 yypact[] = means the default is an error. */ static const yytype_int8 yydefact[] = { - 2, 0, 1, 0, 47, 3, 4, 24, 0, 0, - 45, 0, 46, 0, 0, 0, 0, 0, 5, 11, - 7, 6, 57, 0, 0, 0, 0, 13, 25, 12, - 55, 52, 49, 0, 30, 0, 0, 9, 10, 8, - 50, 49, 0, 53, 0, 32, 33, 28, 0, 0, - 36, 35, 0, 0, 52, 49, 58, 0, 48, 23, - 31, 26, 56, 51, 0, 0, 0, 23, 54, 59, - 0, 29, 0, 0, 0, 0, 0, 15, 14, 16, - 21, 17, 18, 19, 20, 22, 0, 0, 0, 44, - 0, 0, 0, 27, 0, 42, 43, 37, 0, 60, - 34, 41, 38, 39, 40 + 2, 0, 1, 0, 48, 3, 4, 25, 0, 0, + 46, 0, 47, 0, 0, 0, 0, 0, 5, 11, + 7, 6, 58, 0, 0, 0, 0, 13, 26, 12, + 56, 53, 50, 0, 31, 0, 0, 9, 10, 8, + 51, 50, 0, 54, 0, 33, 34, 29, 0, 0, + 37, 36, 0, 0, 53, 50, 59, 0, 49, 24, + 32, 27, 57, 52, 0, 0, 0, 24, 55, 60, + 0, 30, 0, 0, 0, 0, 0, 0, 15, 14, + 16, 21, 17, 18, 19, 20, 22, 23, 0, 0, + 0, 45, 0, 0, 0, 62, 28, 0, 43, 44, + 38, 0, 61, 35, 42, 39, 40, 41 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -45, -45, 62, -45, -45, 66, 8, -1, -45, -28, - -45, -45, -45, 35, -45, -45, -44, -45, -45, -45, - -45, -45, -45, -31, 56, 39, -45, -45, -45, -45, - -45, -45 + -57, -57, 65, -57, -57, 68, 22, -1, -57, -28, + -57, -57, -57, 41, -57, -57, -56, -57, -57, -57, + -57, -57, -57, -21, 59, 37, -57, -57, -57, -57, + -57, -57, -57 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { 0, 1, 16, 38, 29, 17, 66, 18, 9, 19, - 67, 59, 49, 47, 79, 20, 21, 81, 82, 83, - 84, 6, 8, 44, 31, 43, 12, 55, 41, 32, - 58, 85 + 67, 59, 49, 47, 80, 20, 21, 82, 83, 84, + 85, 6, 8, 44, 31, 43, 12, 55, 41, 32, + 58, 86, 87 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -694,58 +696,60 @@ static const yytype_int8 yydefgoto[] = static const yytype_int8 yytable[] = { 5, 39, 10, 3, 13, 14, 2, 56, 62, 3, - 52, 28, 68, 70, 71, 3, 13, 14, 23, 45, - 46, 7, 80, 24, 64, 70, 93, 72, 73, 35, - 11, 74, 22, 75, 25, 26, 57, 57, 78, 72, - 73, 57, 80, 74, 76, 75, 30, 4, 3, 13, - 14, 33, 15, 34, 36, 40, 76, 48, 78, 50, - 51, 53, 69, 87, 42, 77, 60, 65, 89, 88, - 90, 91, 92, 94, 95, 86, 96, 97, 99, 98, - 101, 104, 27, 100, 61, 77, 102, 0, 0, 0, - 103, 37, 0, 63, 0, 0, 0, 0, 54 + 81, 28, 68, 70, 71, 3, 13, 14, 23, 7, + 52, 22, 25, 24, 26, 70, 96, 72, 73, 35, + 11, 74, 81, 75, 64, 33, 57, 57, 79, 72, + 73, 57, 36, 74, 76, 75, 77, 4, 3, 13, + 14, 30, 15, 45, 46, 34, 76, 40, 77, 48, + 79, 42, 53, 50, 51, 78, 60, 65, 69, 89, + 91, 90, 92, 93, 94, 95, 97, 98, 100, 99, + 102, 104, 103, 107, 27, 106, 101, 78, 105, 88, + 61, 63, 0, 0, 37, 0, 0, 0, 0, 0, + 0, 54 }; static const yytype_int8 yycheck[] = { 1, 29, 14, 3, 4, 5, 0, 14, 14, 3, - 41, 14, 14, 13, 14, 3, 4, 5, 7, 9, - 10, 17, 66, 12, 55, 13, 14, 27, 28, 15, - 42, 31, 17, 33, 17, 17, 43, 43, 66, 27, - 28, 43, 86, 31, 44, 33, 30, 41, 3, 4, - 5, 17, 7, 30, 8, 30, 44, 6, 86, 17, - 17, 30, 30, 30, 45, 66, 17, 17, 30, 17, - 30, 30, 17, 15, 17, 67, 17, 30, 17, 35, - 17, 17, 16, 30, 49, 86, 32, -1, -1, -1, - 30, 29, -1, 54, -1, -1, -1, -1, 42 + 66, 14, 14, 13, 14, 3, 4, 5, 7, 17, + 41, 17, 17, 12, 17, 13, 14, 27, 28, 15, + 42, 31, 88, 33, 55, 17, 43, 43, 66, 27, + 28, 43, 8, 31, 44, 33, 46, 41, 3, 4, + 5, 30, 7, 9, 10, 30, 44, 30, 46, 6, + 88, 45, 30, 17, 17, 66, 17, 17, 30, 30, + 30, 17, 30, 30, 17, 17, 15, 17, 30, 17, + 17, 17, 30, 17, 16, 30, 35, 88, 32, 67, + 49, 54, -1, -1, 29, -1, -1, -1, -1, -1, + -1, 42 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int8 yystos[] = { - 0, 47, 0, 3, 41, 53, 67, 17, 68, 54, - 14, 42, 72, 4, 5, 7, 48, 51, 53, 55, - 61, 62, 17, 7, 12, 17, 17, 51, 14, 50, - 30, 70, 75, 17, 30, 15, 8, 48, 49, 55, - 30, 74, 45, 71, 69, 9, 10, 59, 6, 58, - 17, 17, 69, 30, 70, 73, 14, 43, 76, 57, - 17, 59, 14, 71, 69, 17, 52, 56, 14, 30, - 13, 14, 27, 28, 31, 33, 44, 53, 55, 60, - 62, 63, 64, 65, 66, 77, 52, 30, 17, 30, - 30, 30, 17, 14, 15, 17, 17, 30, 35, 17, - 30, 17, 32, 30, 17 + 0, 48, 0, 3, 41, 54, 68, 17, 69, 55, + 14, 42, 73, 4, 5, 7, 49, 52, 54, 56, + 62, 63, 17, 7, 12, 17, 17, 52, 14, 51, + 30, 71, 76, 17, 30, 15, 8, 49, 50, 56, + 30, 75, 45, 72, 70, 9, 10, 60, 6, 59, + 17, 17, 70, 30, 71, 74, 14, 43, 77, 58, + 17, 60, 14, 72, 70, 17, 53, 57, 14, 30, + 13, 14, 27, 28, 31, 33, 44, 46, 54, 56, + 61, 63, 64, 65, 66, 67, 78, 79, 53, 30, + 17, 30, 30, 30, 17, 17, 14, 15, 17, 17, + 30, 35, 17, 30, 17, 32, 30, 17 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int8 yyr1[] = { - 0, 46, 47, 47, 47, 48, 48, 48, 49, 49, - 50, 50, 51, 51, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 54, 53, 56, 55, 57, 55, - 58, 58, 59, 59, 60, 61, 62, 63, 63, 64, - 65, 65, 65, 66, 66, 67, 68, 68, 69, 69, - 70, 71, 71, 73, 72, 74, 72, 75, 72, 76, - 77 + 0, 47, 48, 48, 48, 49, 49, 49, 50, 50, + 51, 51, 52, 52, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 55, 54, 57, 56, 58, + 56, 59, 59, 60, 60, 61, 62, 63, 64, 64, + 65, 66, 66, 66, 67, 67, 68, 69, 69, 70, + 70, 71, 72, 72, 74, 73, 75, 73, 76, 73, + 77, 78, 79 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -753,11 +757,11 @@ static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 1, 1, 1, 1, 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 0, 0, 5, 0, 8, 0, 7, - 0, 2, 1, 1, 4, 4, 4, 3, 4, 4, - 5, 4, 3, 3, 2, 3, 2, 0, 2, 0, - 2, 3, 0, 0, 7, 0, 6, 0, 5, 3, - 3 + 2, 2, 2, 2, 0, 0, 5, 0, 8, 0, + 7, 0, 2, 1, 1, 4, 4, 4, 3, 4, + 4, 5, 4, 3, 3, 2, 3, 2, 0, 2, + 0, 2, 3, 0, 0, 7, 0, 6, 0, 5, + 3, 3, 2 }; @@ -1224,7 +1228,7 @@ yyreduce: { cur_parent = root_parent; } break; - case 24: /* @1: %empty */ + case 25: /* @1: %empty */ { (yyval.chip_instance) = new_chip_instance((yyvsp[0].string)); chip_enqueue_tail(cur_chip_instance); @@ -1232,113 +1236,113 @@ yyreduce: } break; - case 25: /* chip: CHIP STRING @1 chipchildren_dev END */ + case 26: /* chip: CHIP STRING @1 chipchildren_dev END */ { cur_chip_instance = chip_dequeue_tail(); } break; - case 26: /* @2: %empty */ + case 27: /* @2: %empty */ { (yyval.dev) = new_device_raw(cur_parent, cur_chip_instance, (yyvsp[-3].number), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].number)); cur_parent = (yyval.dev)->last_bus; } break; - case 27: /* device: DEVICE BUS NUMBER alias status @2 devicechildren END */ + case 28: /* device: DEVICE BUS NUMBER alias status @2 devicechildren END */ { cur_parent = (yyvsp[-2].dev)->parent; } break; - case 28: /* @3: %empty */ + case 29: /* @3: %empty */ { (yyval.dev) = new_device_reference(cur_parent, cur_chip_instance, (yyvsp[-1].string), (yyvsp[0].number)); cur_parent = (yyval.dev)->last_bus; } break; - case 29: /* device: DEVICE REFERENCE STRING status @3 devicechildren END */ + case 30: /* device: DEVICE REFERENCE STRING status @3 devicechildren END */ { cur_parent = (yyvsp[-2].dev)->parent; } break; - case 30: /* alias: %empty */ + case 31: /* alias: %empty */ { (yyval.string) = NULL; } break; - case 31: /* alias: ALIAS STRING */ + case 32: /* alias: ALIAS STRING */ { (yyval.string) = (yyvsp[0].string); } break; - case 34: /* resource: RESOURCE NUMBER EQUALS NUMBER */ + case 35: /* resource: RESOURCE NUMBER EQUALS NUMBER */ { add_resource(cur_parent, (yyvsp[-3].number), strtol((yyvsp[-2].string), NULL, 0), strtol((yyvsp[0].string), NULL, 0)); } break; - case 35: /* reference: REFERENCE STRING ASSOCIATION STRING */ + case 36: /* reference: REFERENCE STRING ASSOCIATION STRING */ { add_reference(cur_chip_instance, (yyvsp[0].string), (yyvsp[-2].string)); } break; - case 36: /* registers: REGISTER STRING EQUALS STRING */ + case 37: /* registers: REGISTER STRING EQUALS STRING */ { add_register(cur_chip_instance, (yyvsp[-2].string), (yyvsp[0].string)); } break; - case 37: /* subsystemid: SUBSYSTEMID NUMBER NUMBER */ + case 38: /* subsystemid: SUBSYSTEMID NUMBER NUMBER */ { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-1].string), NULL, 16), strtol((yyvsp[0].string), NULL, 16), 0); } break; - case 38: /* subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT */ + case 39: /* subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT */ { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-2].string), NULL, 16), strtol((yyvsp[-1].string), NULL, 16), 1); } break; - case 39: /* ioapic_irq: IOAPIC_IRQ NUMBER PCIINT NUMBER */ + case 40: /* ioapic_irq: IOAPIC_IRQ NUMBER PCIINT NUMBER */ { add_ioapic_info(cur_parent, strtol((yyvsp[-2].string), NULL, 16), (yyvsp[-1].string), strtol((yyvsp[0].string), NULL, 16)); } break; - case 40: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING */ + case 41: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING */ { add_slot_desc(cur_parent, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string)); } break; - case 41: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING */ + case 42: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING */ { add_slot_desc(cur_parent, (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string), NULL); } break; - case 42: /* smbios_slot_desc: SLOT_DESC STRING STRING */ + case 43: /* smbios_slot_desc: SLOT_DESC STRING STRING */ { add_slot_desc(cur_parent, (yyvsp[-1].string), (yyvsp[0].string), NULL, NULL); } break; - case 43: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER STRING */ + case 44: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER STRING */ { add_smbios_dev_info(cur_parent, strtol((yyvsp[-1].string), NULL, 0), (yyvsp[0].string)); } break; - case 44: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER */ + case 45: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER */ { add_smbios_dev_info(cur_parent, strtol((yyvsp[0].string), NULL, 0), NULL); } break; - case 45: /* fw_config_table: FW_CONFIG_TABLE fw_config_table_children END */ + case 46: /* fw_config_table: FW_CONFIG_TABLE fw_config_table_children END */ { } break; - case 50: /* fw_config_field_bits: NUMBER NUMBER */ + case 51: /* fw_config_field_bits: NUMBER NUMBER */ { append_fw_config_bits(&cur_bits, strtoul((yyvsp[-1].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0)); } break; - case 53: /* $@4: %empty */ + case 54: /* $@4: %empty */ { cur_field = new_fw_config_field((yyvsp[-2].string), cur_bits); } break; - case 54: /* fw_config_field: FW_CONFIG_FIELD STRING fw_config_field_bits fw_config_field_bits_repeating $@4 fw_config_field_children END */ + case 55: /* fw_config_field: FW_CONFIG_FIELD STRING fw_config_field_bits fw_config_field_bits_repeating $@4 fw_config_field_children END */ { cur_bits = NULL; } break; - case 55: /* $@5: %empty */ + case 56: /* $@5: %empty */ { cur_bits = NULL; append_fw_config_bits(&cur_bits, strtoul((yyvsp[0].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0)); @@ -1346,28 +1350,32 @@ yyreduce: } break; - case 56: /* fw_config_field: FW_CONFIG_FIELD STRING NUMBER $@5 fw_config_field_children END */ + case 57: /* fw_config_field: FW_CONFIG_FIELD STRING NUMBER $@5 fw_config_field_children END */ { cur_bits = NULL; } break; - case 57: /* $@6: %empty */ + case 58: /* $@6: %empty */ { cur_field = get_fw_config_field((yyvsp[0].string)); } break; - case 58: /* fw_config_field: FW_CONFIG_FIELD STRING $@6 fw_config_field_children END */ + case 59: /* fw_config_field: FW_CONFIG_FIELD STRING $@6 fw_config_field_children END */ { cur_bits = NULL; } break; - case 59: /* fw_config_option: FW_CONFIG_OPTION STRING NUMBER */ + case 60: /* fw_config_option: FW_CONFIG_OPTION STRING NUMBER */ { add_fw_config_option(cur_field, (yyvsp[-1].string), strtoull((yyvsp[0].string), NULL, 0)); } break; - case 60: /* fw_config_probe: FW_CONFIG_PROBE STRING STRING */ + case 61: /* fw_config_probe: FW_CONFIG_PROBE STRING STRING */ { add_fw_config_probe(cur_parent, (yyvsp[-1].string), (yyvsp[0].string)); } break; + case 62: /* ops: OPS STRING */ + { add_device_ops(cur_parent, (yyvsp[0].string)); } + break; + default: break; diff --git a/util/sconfig/sconfig.tab.h_shipped b/util/sconfig/sconfig.tab.h_shipped index fb14adcf1d..a35b64bdb9 100644 --- a/util/sconfig/sconfig.tab.h_shipped +++ b/util/sconfig/sconfig.tab.h_shipped @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.8.1. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C @@ -35,8 +35,8 @@ especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ -#ifndef YY_YY_HOME_USUARIO_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED -# define YY_YY_HOME_USUARIO_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED +#ifndef YY_YY_HOME_ICON_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED +# define YY_YY_HOME_ICON_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -96,7 +96,8 @@ extern int yydebug; FW_CONFIG_FIELD = 297, /* FW_CONFIG_FIELD */ FW_CONFIG_OPTION = 298, /* FW_CONFIG_OPTION */ FW_CONFIG_PROBE = 299, /* FW_CONFIG_PROBE */ - PIPE = 300 /* PIPE */ + PIPE = 300, /* PIPE */ + OPS = 301 /* OPS */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -125,4 +126,4 @@ extern YYSTYPE yylval; int yyparse (void); -#endif /* !YY_YY_HOME_USUARIO_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */ +#endif /* !YY_YY_HOME_ICON_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */ diff --git a/util/sconfig/sconfig.y b/util/sconfig/sconfig.y index 1b611e4b85..fb5409f662 100644 --- a/util/sconfig/sconfig.y +++ b/util/sconfig/sconfig.y @@ -21,7 +21,7 @@ static struct fw_config_field_bits *cur_bits; uint64_t number; } -%token CHIP DEVICE REGISTER ALIAS REFERENCE ASSOCIATION BOOL STATUS MANDATORY BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC CPU_CLUSTER CPU DOMAIN IRQ DRQ SLOT_DESC SMBIOS_DEV_INFO IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO GPIO FW_CONFIG_TABLE FW_CONFIG_FIELD FW_CONFIG_OPTION FW_CONFIG_PROBE PIPE +%token CHIP DEVICE REGISTER ALIAS REFERENCE ASSOCIATION BOOL STATUS MANDATORY BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC CPU_CLUSTER CPU DOMAIN IRQ DRQ SLOT_DESC SMBIOS_DEV_INFO IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO GPIO FW_CONFIG_TABLE FW_CONFIG_FIELD FW_CONFIG_OPTION FW_CONFIG_PROBE PIPE OPS %% devtree: { cur_parent = root_parent; } | devtree chip | devtree fw_config_table; @@ -31,7 +31,7 @@ chipchild: device | chipchild_nondev; chipchildren: chipchildren chipchild | /* empty */ ; chipchildren_dev: device chipchildren | chipchild_nondev chipchildren_dev; -devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | devicechildren ioapic_irq | devicechildren smbios_slot_desc | devicechildren smbios_dev_info | devicechildren registers | devicechildren fw_config_probe | /* empty */ ; +devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | devicechildren ioapic_irq | devicechildren smbios_slot_desc | devicechildren smbios_dev_info | devicechildren registers | devicechildren fw_config_probe | devicechildren ops | /* empty */ ; chip: CHIP STRING /* == path */ { $<chip_instance>$ = new_chip_instance($<string>2); @@ -142,4 +142,8 @@ fw_config_option: FW_CONFIG_OPTION STRING NUMBER /* == field value */ /* probe <field> <option> */ fw_config_probe: FW_CONFIG_PROBE STRING /* == field */ STRING /* == option */ { add_fw_config_probe(cur_parent, $<string>2, $<string>3); } + +ops: OPS STRING /* == global identifier */ + { add_device_ops(cur_parent, $<string>2); } + %% |