xref: /netbsd-src/sys/external/bsd/acpica/dist/compiler/aslresources.y (revision c7960b37466ae0fd417c32e6acbb4b956ac7a121)
171e38f1dSchristos NoEcho('
271e38f1dSchristos /******************************************************************************
371e38f1dSchristos  *
471e38f1dSchristos  * Module Name: aslresources.y - Bison/Yacc production rules for resources
5835858a6Schristos  *                             - Keep this file synched with the
6835858a6Schristos  *                               CvParseOpBlockType function in cvcompiler.c
771e38f1dSchristos  *
871e38f1dSchristos  *****************************************************************************/
971e38f1dSchristos 
1071e38f1dSchristos /*
11046a2985Schristos  * Copyright (C) 2000 - 2023, Intel Corp.
1271e38f1dSchristos  * All rights reserved.
1371e38f1dSchristos  *
1471e38f1dSchristos  * Redistribution and use in source and binary forms, with or without
1571e38f1dSchristos  * modification, are permitted provided that the following conditions
1671e38f1dSchristos  * are met:
1771e38f1dSchristos  * 1. Redistributions of source code must retain the above copyright
1871e38f1dSchristos  *    notice, this list of conditions, and the following disclaimer,
1971e38f1dSchristos  *    without modification.
2071e38f1dSchristos  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
2171e38f1dSchristos  *    substantially similar to the "NO WARRANTY" disclaimer below
2271e38f1dSchristos  *    ("Disclaimer") and any redistribution must be conditioned upon
2371e38f1dSchristos  *    including a substantially similar Disclaimer requirement for further
2471e38f1dSchristos  *    binary redistribution.
2571e38f1dSchristos  * 3. Neither the names of the above-listed copyright holders nor the names
2671e38f1dSchristos  *    of any contributors may be used to endorse or promote products derived
2771e38f1dSchristos  *    from this software without specific prior written permission.
2871e38f1dSchristos  *
2971e38f1dSchristos  * Alternatively, this software may be distributed under the terms of the
3071e38f1dSchristos  * GNU General Public License ("GPL") version 2 as published by the Free
3171e38f1dSchristos  * Software Foundation.
3271e38f1dSchristos  *
3371e38f1dSchristos  * NO WARRANTY
3471e38f1dSchristos  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3571e38f1dSchristos  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3646a330b4Schristos  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
3771e38f1dSchristos  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3871e38f1dSchristos  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3971e38f1dSchristos  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
4071e38f1dSchristos  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
4171e38f1dSchristos  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
4271e38f1dSchristos  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
4371e38f1dSchristos  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
4471e38f1dSchristos  * POSSIBILITY OF SUCH DAMAGES.
4571e38f1dSchristos  */
4671e38f1dSchristos 
4771e38f1dSchristos ')
4871e38f1dSchristos 
4971e38f1dSchristos 
5071e38f1dSchristos /*******************************************************************************
5171e38f1dSchristos  *
5271e38f1dSchristos  * ASL Resource Template Terms
5371e38f1dSchristos  *
5471e38f1dSchristos  ******************************************************************************/
5571e38f1dSchristos 
5671e38f1dSchristos /*
5771e38f1dSchristos  * Note: Create two default nodes to allow conversion to a Buffer AML opcode
5871e38f1dSchristos  * Also, insert the EndTag at the end of the template.
5971e38f1dSchristos  */
6071e38f1dSchristos ResourceTemplateTerm
61835858a6Schristos     : PARSEOP_RESOURCETEMPLATE      {COMMENT_CAPTURE_OFF;}
620b89cdedSchristos         OptionalParentheses
6371e38f1dSchristos         '{'
6489b8eb6cSchristos         ResourceMacroList '}'       {$$ = TrCreateOp (PARSEOP_RESOURCETEMPLATE,4,
6589b8eb6cSchristos                                           TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
6689b8eb6cSchristos                                           TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
67835858a6Schristos                                           $5,
6889b8eb6cSchristos                                           TrCreateLeafOp (PARSEOP_ENDTAG));
69835858a6Schristos                                      COMMENT_CAPTURE_ON;}
7071e38f1dSchristos     ;
7171e38f1dSchristos 
72d0e1da26Schristos OptionalParentheses
73d0e1da26Schristos     :                               {$$ = NULL;}
740b89cdedSchristos     | PARSEOP_OPEN_PAREN
750b89cdedSchristos         PARSEOP_CLOSE_PAREN         {$$ = NULL;}
76d0e1da26Schristos     ;
77d0e1da26Schristos 
7871e38f1dSchristos ResourceMacroList
7971e38f1dSchristos     :                               {$$ = NULL;}
8071e38f1dSchristos     | ResourceMacroList
8189b8eb6cSchristos         ResourceMacroTerm           {$$ = TrLinkPeerOp ($1,$2);}
8271e38f1dSchristos     ;
8371e38f1dSchristos 
8471e38f1dSchristos ResourceMacroTerm
8546a330b4Schristos     : Csi2SerialBusTerm             {}
8646a330b4Schristos     | DMATerm                       {}
8771e38f1dSchristos     | DWordIOTerm                   {}
8871e38f1dSchristos     | DWordMemoryTerm               {}
89*c7960b37Schristos     | DWordPccTerm                  {}
9071e38f1dSchristos     | DWordSpaceTerm                {}
9171e38f1dSchristos     | EndDependentFnTerm            {}
9271e38f1dSchristos     | ExtendedIOTerm                {}
9371e38f1dSchristos     | ExtendedMemoryTerm            {}
9471e38f1dSchristos     | ExtendedSpaceTerm             {}
9571e38f1dSchristos     | FixedDmaTerm                  {}
9671e38f1dSchristos     | FixedIOTerm                   {}
9771e38f1dSchristos     | GpioIntTerm                   {}
9871e38f1dSchristos     | GpioIoTerm                    {}
9971e38f1dSchristos     | I2cSerialBusTerm              {}
100cfbb7280Schristos     | I2cSerialBusTermV2            {}
10171e38f1dSchristos     | InterruptTerm                 {}
10271e38f1dSchristos     | IOTerm                        {}
10371e38f1dSchristos     | IRQNoFlagsTerm                {}
10471e38f1dSchristos     | IRQTerm                       {}
10571e38f1dSchristos     | Memory24Term                  {}
10671e38f1dSchristos     | Memory32FixedTerm             {}
10771e38f1dSchristos     | Memory32Term                  {}
10889b8eb6cSchristos     | PinConfigTerm                 {}
10989b8eb6cSchristos     | PinFunctionTerm               {}
110046a2985Schristos     | ClockInputTerm                {}
11189b8eb6cSchristos     | PinGroupTerm                  {}
11289b8eb6cSchristos     | PinGroupConfigTerm            {}
11389b8eb6cSchristos     | PinGroupFunctionTerm          {}
11471e38f1dSchristos     | QWordIOTerm                   {}
11571e38f1dSchristos     | QWordMemoryTerm               {}
116*c7960b37Schristos     | QWordPccTerm                  {}
11771e38f1dSchristos     | QWordSpaceTerm                {}
11871e38f1dSchristos     | RegisterTerm                  {}
11971e38f1dSchristos     | SpiSerialBusTerm              {}
120cfbb7280Schristos     | SpiSerialBusTermV2            {}
12171e38f1dSchristos     | StartDependentFnNoPriTerm     {}
12271e38f1dSchristos     | StartDependentFnTerm          {}
12371e38f1dSchristos     | UartSerialBusTerm             {}
124cfbb7280Schristos     | UartSerialBusTermV2           {}
12571e38f1dSchristos     | VendorLongTerm                {}
12671e38f1dSchristos     | VendorShortTerm               {}
12771e38f1dSchristos     | WordBusNumberTerm             {}
12871e38f1dSchristos     | WordIOTerm                    {}
129*c7960b37Schristos     | WordPccTerm                   {}
13071e38f1dSchristos     | WordSpaceTerm                 {}
13171e38f1dSchristos     ;
13271e38f1dSchristos 
13346a330b4Schristos Csi2SerialBusTerm
13446a330b4Schristos     : PARSEOP_CSI2_SERIALBUS
13546a330b4Schristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CSI2_SERIALBUS);}
13646a330b4Schristos         OptionalSlaveMode_First     {UtCheckIntegerRange ($4, 0x00, 0x01);} /* 04: SlaveMode */
13746a330b4Schristos         ',' ByteConstExpr           {UtCheckIntegerRange ($7, 0x00, 0x03);} /* 07: PhyType */
13846a330b4Schristos         OptionalByteConstExpr       {UtCheckIntegerRange ($9, 0x00, 0xFC);} /* 09: LocalPortInstance */
13946a330b4Schristos         ',' StringData              /* 12: ResourceSource */
14046a330b4Schristos         ',' ByteConstExpr           /* 14: ResourceSourceIndex */
14146a330b4Schristos         OptionalResourceType        /* 15; ResourceType (ResourceUsage) */
14246a330b4Schristos         OptionalNameString          /* 16: DescriptorName */
14346a330b4Schristos         OptionalBuffer_Last         /* 17: VendorData */
14446a330b4Schristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
14546a330b4Schristos                                         $4,$7,$9,$12,$14,$15,$16,$17);}
14646a330b4Schristos     | PARSEOP_CSI2_SERIALBUS
14746a330b4Schristos         PARSEOP_OPEN_PAREN
14846a330b4Schristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
14946a330b4Schristos 
15071e38f1dSchristos DMATerm
1510b89cdedSchristos     : PARSEOP_DMA
15289b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DMA);}
15371e38f1dSchristos         DMATypeKeyword
15471e38f1dSchristos         OptionalBusMasterKeyword
15571e38f1dSchristos         ',' XferTypeKeyword
15671e38f1dSchristos         OptionalNameString_Last
1570b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
15889b8eb6cSchristos             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$7,$8,$11);}
1590b89cdedSchristos     | PARSEOP_DMA
1600b89cdedSchristos         PARSEOP_OPEN_PAREN
1610b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
16271e38f1dSchristos     ;
16371e38f1dSchristos 
16471e38f1dSchristos DWordIOTerm
1650b89cdedSchristos     : PARSEOP_DWORDIO
16689b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDIO);}
16771e38f1dSchristos         OptionalResourceType_First
16871e38f1dSchristos         OptionalMinType
16971e38f1dSchristos         OptionalMaxType
17071e38f1dSchristos         OptionalDecodeType
17171e38f1dSchristos         OptionalRangeType
17271e38f1dSchristos         ',' DWordConstExpr
17371e38f1dSchristos         ',' DWordConstExpr
17471e38f1dSchristos         ',' DWordConstExpr
17571e38f1dSchristos         ',' DWordConstExpr
17671e38f1dSchristos         ',' DWordConstExpr
17771e38f1dSchristos         OptionalByteConstExpr
17871e38f1dSchristos         OptionalStringData
17971e38f1dSchristos         OptionalNameString
18071e38f1dSchristos         OptionalType
18171e38f1dSchristos         OptionalTranslationType_Last
18289b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
183d0e1da26Schristos                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
1840b89cdedSchristos     | PARSEOP_DWORDIO
1850b89cdedSchristos         PARSEOP_OPEN_PAREN
1860b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
18771e38f1dSchristos     ;
18871e38f1dSchristos 
18971e38f1dSchristos DWordMemoryTerm
1900b89cdedSchristos     : PARSEOP_DWORDMEMORY
19189b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDMEMORY);}
19271e38f1dSchristos         OptionalResourceType_First
19371e38f1dSchristos         OptionalDecodeType
19471e38f1dSchristos         OptionalMinType
19571e38f1dSchristos         OptionalMaxType
19671e38f1dSchristos         OptionalMemType
19771e38f1dSchristos         ',' OptionalReadWriteKeyword
19871e38f1dSchristos         ',' DWordConstExpr
19971e38f1dSchristos         ',' DWordConstExpr
20071e38f1dSchristos         ',' DWordConstExpr
20171e38f1dSchristos         ',' DWordConstExpr
20271e38f1dSchristos         ',' DWordConstExpr
20371e38f1dSchristos         OptionalByteConstExpr
20471e38f1dSchristos         OptionalStringData
20571e38f1dSchristos         OptionalNameString
20671e38f1dSchristos         OptionalAddressRange
20771e38f1dSchristos         OptionalType_Last
20889b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
209d0e1da26Schristos                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2100b89cdedSchristos     | PARSEOP_DWORDMEMORY
2110b89cdedSchristos         PARSEOP_OPEN_PAREN
2120b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
21371e38f1dSchristos     ;
21471e38f1dSchristos 
215*c7960b37Schristos DWordPccTerm
216*c7960b37Schristos     : PARSEOP_DWORDPCC
217*c7960b37Schristos         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDPCC);}
218*c7960b37Schristos         ByteConstExpr
219*c7960b37Schristos         OptionalByteConstExpr
220*c7960b37Schristos         OptionalStringData
221*c7960b37Schristos         OptionalNameString_Last
222*c7960b37Schristos         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
223*c7960b37Schristos                                                         $4,$5,$6,$7);}
224*c7960b37Schristos     | PARSEOP_DWORDPCC
225*c7960b37Schristos         PARSEOP_OPEN_PAREN
226*c7960b37Schristos         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
227*c7960b37Schristos     ;
228*c7960b37Schristos 
22971e38f1dSchristos DWordSpaceTerm
2300b89cdedSchristos     : PARSEOP_DWORDSPACE
23189b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDSPACE);}
23271e38f1dSchristos         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
23371e38f1dSchristos         OptionalResourceType
23471e38f1dSchristos         OptionalDecodeType
23571e38f1dSchristos         OptionalMinType
23671e38f1dSchristos         OptionalMaxType
23771e38f1dSchristos         ',' ByteConstExpr
23871e38f1dSchristos         ',' DWordConstExpr
23971e38f1dSchristos         ',' DWordConstExpr
24071e38f1dSchristos         ',' DWordConstExpr
24171e38f1dSchristos         ',' DWordConstExpr
24271e38f1dSchristos         ',' DWordConstExpr
24371e38f1dSchristos         OptionalByteConstExpr
24471e38f1dSchristos         OptionalStringData
24571e38f1dSchristos         OptionalNameString_Last
24689b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
247d0e1da26Schristos                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2480b89cdedSchristos     | PARSEOP_DWORDSPACE
2490b89cdedSchristos         PARSEOP_OPEN_PAREN
2500b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
25171e38f1dSchristos     ;
25271e38f1dSchristos 
25371e38f1dSchristos EndDependentFnTerm
2540b89cdedSchristos     : PARSEOP_ENDDEPENDENTFN
2550b89cdedSchristos         PARSEOP_OPEN_PAREN
25689b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrCreateLeafOp (PARSEOP_ENDDEPENDENTFN);}
2570b89cdedSchristos     | PARSEOP_ENDDEPENDENTFN
2580b89cdedSchristos         PARSEOP_OPEN_PAREN
2590b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
26071e38f1dSchristos     ;
26171e38f1dSchristos 
26271e38f1dSchristos ExtendedIOTerm
2630b89cdedSchristos     : PARSEOP_EXTENDEDIO
26489b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDIO);}
26571e38f1dSchristos         OptionalResourceType_First
26671e38f1dSchristos         OptionalMinType
26771e38f1dSchristos         OptionalMaxType
26871e38f1dSchristos         OptionalDecodeType
26971e38f1dSchristos         OptionalRangeType
27071e38f1dSchristos         ',' QWordConstExpr
27171e38f1dSchristos         ',' QWordConstExpr
27271e38f1dSchristos         ',' QWordConstExpr
27371e38f1dSchristos         ',' QWordConstExpr
27471e38f1dSchristos         ',' QWordConstExpr
27571e38f1dSchristos         OptionalQWordConstExpr
27671e38f1dSchristos         OptionalNameString
27771e38f1dSchristos         OptionalType
27871e38f1dSchristos         OptionalTranslationType_Last
27989b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
280d0e1da26Schristos                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2810b89cdedSchristos     | PARSEOP_EXTENDEDIO
2820b89cdedSchristos         PARSEOP_OPEN_PAREN
2830b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
28471e38f1dSchristos     ;
28571e38f1dSchristos 
28671e38f1dSchristos ExtendedMemoryTerm
2870b89cdedSchristos     : PARSEOP_EXTENDEDMEMORY
28889b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDMEMORY);}
28971e38f1dSchristos         OptionalResourceType_First
29071e38f1dSchristos         OptionalDecodeType
29171e38f1dSchristos         OptionalMinType
29271e38f1dSchristos         OptionalMaxType
29371e38f1dSchristos         OptionalMemType
29471e38f1dSchristos         ',' OptionalReadWriteKeyword
29571e38f1dSchristos         ',' QWordConstExpr
29671e38f1dSchristos         ',' QWordConstExpr
29771e38f1dSchristos         ',' QWordConstExpr
29871e38f1dSchristos         ',' QWordConstExpr
29971e38f1dSchristos         ',' QWordConstExpr
30071e38f1dSchristos         OptionalQWordConstExpr
30171e38f1dSchristos         OptionalNameString
30271e38f1dSchristos         OptionalAddressRange
30371e38f1dSchristos         OptionalType_Last
30489b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
305d0e1da26Schristos                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
3060b89cdedSchristos     | PARSEOP_EXTENDEDMEMORY
3070b89cdedSchristos         PARSEOP_OPEN_PAREN
3080b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
30971e38f1dSchristos     ;
31071e38f1dSchristos 
31171e38f1dSchristos ExtendedSpaceTerm
31289b8eb6cSchristos     : PARSEOP_EXTENDEDSPACE PARSEOP_OPEN_PAREN     {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDSPACE);}
31371e38f1dSchristos         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
31471e38f1dSchristos         OptionalResourceType
31571e38f1dSchristos         OptionalDecodeType
31671e38f1dSchristos         OptionalMinType
31771e38f1dSchristos         OptionalMaxType
31871e38f1dSchristos         ',' ByteConstExpr
31971e38f1dSchristos         ',' QWordConstExpr
32071e38f1dSchristos         ',' QWordConstExpr
32171e38f1dSchristos         ',' QWordConstExpr
32271e38f1dSchristos         ',' QWordConstExpr
32371e38f1dSchristos         ',' QWordConstExpr
32471e38f1dSchristos         OptionalQWordConstExpr
32571e38f1dSchristos         OptionalNameString_Last
32689b8eb6cSchristos         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,13,
327d0e1da26Schristos                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
3280b89cdedSchristos     | PARSEOP_EXTENDEDSPACE
3290b89cdedSchristos         PARSEOP_OPEN_PAREN
3300b89cdedSchristos         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
33171e38f1dSchristos     ;
33271e38f1dSchristos 
33371e38f1dSchristos FixedDmaTerm
3340b89cdedSchristos     : PARSEOP_FIXEDDMA
33589b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDDMA);}
33671e38f1dSchristos         WordConstExpr               /* 04: DMA RequestLines */
33771e38f1dSchristos         ',' WordConstExpr           /* 06: DMA Channels */
33871e38f1dSchristos         OptionalXferSize            /* 07: DMA TransferSize */
33971e38f1dSchristos         OptionalNameString          /* 08: DescriptorName */
34089b8eb6cSchristos         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$7,$8);}
3410b89cdedSchristos     | PARSEOP_FIXEDDMA
3420b89cdedSchristos         PARSEOP_OPEN_PAREN
3430b89cdedSchristos         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
34471e38f1dSchristos     ;
34571e38f1dSchristos 
34671e38f1dSchristos FixedIOTerm
3470b89cdedSchristos     : PARSEOP_FIXEDIO
34889b8eb6cSchristos         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDIO);}
34971e38f1dSchristos         WordConstExpr
35071e38f1dSchristos         ',' ByteConstExpr
35171e38f1dSchristos         OptionalNameString_Last
35289b8eb6cSchristos         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
3530b89cdedSchristos     | PARSEOP_FIXEDIO
3540b89cdedSchristos         PARSEOP_OPEN_PAREN
3550b89cdedSchristos         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
35671e38f1dSchristos     ;
35771e38f1dSchristos 
35871e38f1dSchristos GpioIntTerm
3590b89cdedSchristos     : PARSEOP_GPIO_INT
36089b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_INT);}
36171e38f1dSchristos         InterruptTypeKeyword        /* 04: InterruptType */
36271e38f1dSchristos         ',' InterruptLevel          /* 06: InterruptLevel */
36371e38f1dSchristos         OptionalShareType           /* 07: SharedType */
36471e38f1dSchristos         ',' PinConfigByte           /* 09: PinConfig */
36571e38f1dSchristos         OptionalWordConstExpr       /* 10: DebounceTimeout */
36671e38f1dSchristos         ',' StringData              /* 12: ResourceSource */
36771e38f1dSchristos         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
36871e38f1dSchristos         OptionalResourceType        /* 14: ResourceType */
36971e38f1dSchristos         OptionalNameString          /* 15: DescriptorName */
37071e38f1dSchristos         OptionalBuffer_Last         /* 16: VendorData */
3710b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
37289b8eb6cSchristos             DWordConstExpr '}'      {$$ = TrLinkOpChildren ($<n>3,11,
373d0e1da26Schristos                                         $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
3740b89cdedSchristos     | PARSEOP_GPIO_INT
3750b89cdedSchristos         PARSEOP_OPEN_PAREN
3760b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
37771e38f1dSchristos     ;
37871e38f1dSchristos 
37971e38f1dSchristos GpioIoTerm
3800b89cdedSchristos     : PARSEOP_GPIO_IO
38189b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_IO);}
38271e38f1dSchristos         OptionalShareType_First     /* 04: SharedType */
38371e38f1dSchristos         ',' PinConfigByte           /* 06: PinConfig */
38471e38f1dSchristos         OptionalWordConstExpr       /* 07: DebounceTimeout */
38571e38f1dSchristos         OptionalWordConstExpr       /* 08: DriveStrength */
38671e38f1dSchristos         OptionalIoRestriction       /* 09: IoRestriction */
38771e38f1dSchristos         ',' StringData              /* 11: ResourceSource */
38871e38f1dSchristos         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
38971e38f1dSchristos         OptionalResourceType        /* 13: ResourceType */
39071e38f1dSchristos         OptionalNameString          /* 14: DescriptorName */
39171e38f1dSchristos         OptionalBuffer_Last         /* 15: VendorData */
3920b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
39389b8eb6cSchristos             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,11,
394d0e1da26Schristos                                         $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
3950b89cdedSchristos     | PARSEOP_GPIO_IO
3960b89cdedSchristos         PARSEOP_OPEN_PAREN
3970b89cdedSchristos         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
39871e38f1dSchristos     ;
39971e38f1dSchristos 
40071e38f1dSchristos I2cSerialBusTerm
4010b89cdedSchristos     : PARSEOP_I2C_SERIALBUS
40289b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS);}
40371e38f1dSchristos         WordConstExpr               /* 04: SlaveAddress */
40471e38f1dSchristos         OptionalSlaveMode           /* 05: SlaveMode */
40571e38f1dSchristos         ',' DWordConstExpr          /* 07: ConnectionSpeed */
40671e38f1dSchristos         OptionalAddressingMode      /* 08: AddressingMode */
40771e38f1dSchristos         ',' StringData              /* 10: ResourceSource */
40871e38f1dSchristos         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
40971e38f1dSchristos         OptionalResourceType        /* 12: ResourceType */
41071e38f1dSchristos         OptionalNameString          /* 13: DescriptorName */
41171e38f1dSchristos         OptionalBuffer_Last         /* 14: VendorData */
41289b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
413d0e1da26Schristos                                         $4,$5,$7,$8,$10,$11,$12,$13,
41489b8eb6cSchristos                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$14);}
4150b89cdedSchristos     | PARSEOP_I2C_SERIALBUS
4160b89cdedSchristos         PARSEOP_OPEN_PAREN
4170b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
41871e38f1dSchristos     ;
41971e38f1dSchristos 
420cfbb7280Schristos I2cSerialBusTermV2
4210b89cdedSchristos     : PARSEOP_I2C_SERIALBUS_V2
42289b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS_V2);}
423cfbb7280Schristos         WordConstExpr               /* 04: SlaveAddress */
424cfbb7280Schristos         OptionalSlaveMode           /* 05: SlaveMode */
425cfbb7280Schristos         ',' DWordConstExpr          /* 07: ConnectionSpeed */
426cfbb7280Schristos         OptionalAddressingMode      /* 08: AddressingMode */
427cfbb7280Schristos         ',' StringData              /* 10: ResourceSource */
428cfbb7280Schristos         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
429cfbb7280Schristos         OptionalResourceType        /* 12: ResourceType */
430cfbb7280Schristos         OptionalNameString          /* 13: DescriptorName */
431cfbb7280Schristos         OptionalShareType           /* 14: Share */
432cfbb7280Schristos         OptionalBuffer_Last         /* 15: VendorData */
43389b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
434d0e1da26Schristos                                         $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
4350b89cdedSchristos     | PARSEOP_I2C_SERIALBUS_V2
4360b89cdedSchristos         PARSEOP_OPEN_PAREN
4370b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
438cfbb7280Schristos     ;
439cfbb7280Schristos 
44071e38f1dSchristos InterruptTerm
4410b89cdedSchristos     : PARSEOP_INTERRUPT
44289b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_INTERRUPT);}
44371e38f1dSchristos         OptionalResourceType_First
44471e38f1dSchristos         ',' InterruptTypeKeyword
44571e38f1dSchristos         ',' InterruptLevel
44671e38f1dSchristos         OptionalShareType
44771e38f1dSchristos         OptionalByteConstExpr
44871e38f1dSchristos         OptionalStringData
44971e38f1dSchristos         OptionalNameString_Last
4500b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
45189b8eb6cSchristos             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,8,
452d0e1da26Schristos                                         $4,$6,$8,$9,$10,$11,$12,$15);}
4530b89cdedSchristos     | PARSEOP_INTERRUPT
4540b89cdedSchristos         PARSEOP_OPEN_PAREN
4550b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
45671e38f1dSchristos     ;
45771e38f1dSchristos 
45871e38f1dSchristos IOTerm
4590b89cdedSchristos     : PARSEOP_IO
46089b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IO);}
46171e38f1dSchristos         IODecodeKeyword
46271e38f1dSchristos         ',' WordConstExpr
46371e38f1dSchristos         ',' WordConstExpr
46471e38f1dSchristos         ',' ByteConstExpr
46571e38f1dSchristos         ',' ByteConstExpr
46671e38f1dSchristos         OptionalNameString_Last
46789b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
4680b89cdedSchristos     | PARSEOP_IO
4690b89cdedSchristos         PARSEOP_OPEN_PAREN
4700b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
47171e38f1dSchristos     ;
47271e38f1dSchristos 
47371e38f1dSchristos IRQNoFlagsTerm
4740b89cdedSchristos     : PARSEOP_IRQNOFLAGS
47589b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQNOFLAGS);}
47671e38f1dSchristos         OptionalNameString_First
4770b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
47889b8eb6cSchristos             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
4790b89cdedSchristos     | PARSEOP_IRQNOFLAGS
4800b89cdedSchristos         PARSEOP_OPEN_PAREN
4810b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
48271e38f1dSchristos     ;
48371e38f1dSchristos 
48471e38f1dSchristos IRQTerm
4850b89cdedSchristos     : PARSEOP_IRQ
48689b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQ);}
48771e38f1dSchristos         InterruptTypeKeyword
48871e38f1dSchristos         ',' InterruptLevel
48971e38f1dSchristos         OptionalShareType
49071e38f1dSchristos         OptionalNameString_Last
4910b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
49289b8eb6cSchristos             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$6,$7,$8,$11);}
4930b89cdedSchristos     | PARSEOP_IRQ
4940b89cdedSchristos         PARSEOP_OPEN_PAREN
4950b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
49671e38f1dSchristos     ;
49771e38f1dSchristos 
49871e38f1dSchristos Memory24Term
4990b89cdedSchristos     : PARSEOP_MEMORY24
50089b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY24);}
50171e38f1dSchristos         OptionalReadWriteKeyword
50271e38f1dSchristos         ',' WordConstExpr
50371e38f1dSchristos         ',' WordConstExpr
50471e38f1dSchristos         ',' WordConstExpr
50571e38f1dSchristos         ',' WordConstExpr
50671e38f1dSchristos         OptionalNameString_Last
50789b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
5080b89cdedSchristos     | PARSEOP_MEMORY24
5090b89cdedSchristos         PARSEOP_OPEN_PAREN
5100b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
51171e38f1dSchristos     ;
51271e38f1dSchristos 
51371e38f1dSchristos Memory32FixedTerm
5140b89cdedSchristos     : PARSEOP_MEMORY32FIXED
51589b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32FIXED);}
51671e38f1dSchristos         OptionalReadWriteKeyword
51771e38f1dSchristos         ',' DWordConstExpr
51871e38f1dSchristos         ',' DWordConstExpr
51971e38f1dSchristos         OptionalNameString_Last
52089b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$8,$9);}
5210b89cdedSchristos     | PARSEOP_MEMORY32FIXED
5220b89cdedSchristos         PARSEOP_OPEN_PAREN
5230b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
52471e38f1dSchristos     ;
52571e38f1dSchristos 
52671e38f1dSchristos Memory32Term
5270b89cdedSchristos     : PARSEOP_MEMORY32
52889b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32);}
52971e38f1dSchristos         OptionalReadWriteKeyword
53071e38f1dSchristos         ',' DWordConstExpr
53171e38f1dSchristos         ',' DWordConstExpr
53271e38f1dSchristos         ',' DWordConstExpr
53371e38f1dSchristos         ',' DWordConstExpr
53471e38f1dSchristos         OptionalNameString_Last
53589b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
5360b89cdedSchristos     | PARSEOP_MEMORY32
5370b89cdedSchristos         PARSEOP_OPEN_PAREN
5380b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
53971e38f1dSchristos     ;
54071e38f1dSchristos 
54189b8eb6cSchristos PinConfigTerm
54289b8eb6cSchristos     : PARSEOP_PINCONFIG
54389b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINCONFIG);}
54489b8eb6cSchristos         OptionalShareType_First     /* 04: SharedType */
54589b8eb6cSchristos         ',' ByteConstExpr           /* 06: PinConfigType */
54689b8eb6cSchristos         ',' DWordConstExpr          /* 08: PinConfigValue */
54789b8eb6cSchristos         ',' StringData              /* 10: ResourceSource */
54889b8eb6cSchristos         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
54989b8eb6cSchristos         OptionalResourceType        /* 12: ResourceType */
55089b8eb6cSchristos         OptionalNameString          /* 13: DescriptorName */
55189b8eb6cSchristos         OptionalBuffer_Last         /* 14: VendorData */
55289b8eb6cSchristos         PARSEOP_CLOSE_PAREN '{'
55389b8eb6cSchristos             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
55489b8eb6cSchristos                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
55589b8eb6cSchristos     | PARSEOP_PINCONFIG
55689b8eb6cSchristos         PARSEOP_OPEN_PAREN
55789b8eb6cSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
55889b8eb6cSchristos     ;
55989b8eb6cSchristos 
56089b8eb6cSchristos PinFunctionTerm
56189b8eb6cSchristos     : PARSEOP_PINFUNCTION
56289b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINFUNCTION);}
56389b8eb6cSchristos         OptionalShareType_First     /* 04: SharedType */
56489b8eb6cSchristos         ',' PinConfigByte           /* 06: PinConfig */
56589b8eb6cSchristos         ',' WordConstExpr           /* 08: FunctionNumber */
56689b8eb6cSchristos         ',' StringData              /* 10: ResourceSource */
56789b8eb6cSchristos         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
56889b8eb6cSchristos         OptionalResourceType        /* 12: ResourceType */
56989b8eb6cSchristos         OptionalNameString          /* 13: DescriptorName */
57089b8eb6cSchristos         OptionalBuffer_Last         /* 14: VendorData */
57189b8eb6cSchristos         PARSEOP_CLOSE_PAREN '{'
57289b8eb6cSchristos             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
57389b8eb6cSchristos                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
57489b8eb6cSchristos     | PARSEOP_PINFUNCTION
57589b8eb6cSchristos         PARSEOP_OPEN_PAREN
57689b8eb6cSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
57789b8eb6cSchristos     ;
57889b8eb6cSchristos 
579046a2985Schristos ClockInputTerm
580046a2985Schristos     : PARSEOP_CLOCKINPUT
581046a2985Schristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CLOCKINPUT);}
582046a2985Schristos         DWordConstExpr              /* 04: FrequencyNumerator */
583046a2985Schristos         ',' WordConstExpr           /* 06: FrequencyDivisor */
584046a2985Schristos         ',' ClockScaleKeyword       /* 08: Scale */
585046a2985Schristos         ',' ClockModeKeyword        /* 10: Mode*/
586046a2985Schristos         OptionalStringData          /* 11: ResourceSource */
587046a2985Schristos         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
588046a2985Schristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
589046a2985Schristos     | PARSEOP_CLOCKINPUT
590046a2985Schristos         PARSEOP_OPEN_PAREN
591046a2985Schristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
592046a2985Schristos     ;
593046a2985Schristos 
59489b8eb6cSchristos PinGroupTerm
59589b8eb6cSchristos     : PARSEOP_PINGROUP
59689b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUP);}
59789b8eb6cSchristos         StringData                  /* 04: ResourceLabel */
59889b8eb6cSchristos         OptionalProducerResourceType /* 05: ResourceType */
59989b8eb6cSchristos         OptionalNameString          /* 06: DescriptorName */
60089b8eb6cSchristos         OptionalBuffer_Last         /* 07: VendorData */
60189b8eb6cSchristos         PARSEOP_CLOSE_PAREN '{'
60289b8eb6cSchristos             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$6,$7,$10);}
60389b8eb6cSchristos     | PARSEOP_PINGROUP
60489b8eb6cSchristos         PARSEOP_OPEN_PAREN
60589b8eb6cSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
60689b8eb6cSchristos     ;
60789b8eb6cSchristos 
60889b8eb6cSchristos PinGroupConfigTerm
60989b8eb6cSchristos     : PARSEOP_PINGROUPCONFIG
61089b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPCONFIG);}
61189b8eb6cSchristos         OptionalShareType_First     /* 04: SharedType */
61289b8eb6cSchristos         ',' ByteConstExpr           /* 06: PinConfigType */
61389b8eb6cSchristos         ',' DWordConstExpr          /* 08: PinConfigValue */
61489b8eb6cSchristos         ',' StringData              /* 10: ResourceSource */
61589b8eb6cSchristos         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
61689b8eb6cSchristos         ',' StringData              /* 13: ResourceSourceLabel */
61789b8eb6cSchristos         OptionalResourceType        /* 14: ResourceType */
61889b8eb6cSchristos         OptionalNameString          /* 15: DescriptorName */
61989b8eb6cSchristos         OptionalBuffer_Last         /* 16: VendorData */
62089b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,9,
62189b8eb6cSchristos                                         $4,$6,$8,$10,$11,$13,$14,$15,$16);}
62289b8eb6cSchristos     | PARSEOP_PINGROUPCONFIG
62389b8eb6cSchristos         PARSEOP_OPEN_PAREN
62489b8eb6cSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
62589b8eb6cSchristos     ;
62689b8eb6cSchristos 
62789b8eb6cSchristos PinGroupFunctionTerm
62889b8eb6cSchristos     : PARSEOP_PINGROUPFUNCTION
62989b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPFUNCTION);}
63089b8eb6cSchristos         OptionalShareType_First     /* 04: SharedType */
63189b8eb6cSchristos         ',' WordConstExpr           /* 06: FunctionNumber */
63289b8eb6cSchristos         ',' StringData              /* 08: ResourceSource */
63389b8eb6cSchristos         OptionalByteConstExpr       /* 09: ResourceSourceIndex */
63489b8eb6cSchristos         ',' StringData              /* 11: ResourceSourceLabel */
63589b8eb6cSchristos         OptionalResourceType        /* 12: ResourceType */
63689b8eb6cSchristos         OptionalNameString          /* 13: DescriptorName */
63789b8eb6cSchristos         OptionalBuffer_Last         /* 14: VendorData */
63889b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
63989b8eb6cSchristos                                         $4,$6,$8,$9,$11,$12,$13,$14);}
64089b8eb6cSchristos     | PARSEOP_PINGROUPFUNCTION
64189b8eb6cSchristos         PARSEOP_OPEN_PAREN
64289b8eb6cSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
64389b8eb6cSchristos     ;
64489b8eb6cSchristos 
64571e38f1dSchristos QWordIOTerm
6460b89cdedSchristos     : PARSEOP_QWORDIO
64789b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDIO);}
64871e38f1dSchristos         OptionalResourceType_First
64971e38f1dSchristos         OptionalMinType
65071e38f1dSchristos         OptionalMaxType
65171e38f1dSchristos         OptionalDecodeType
65271e38f1dSchristos         OptionalRangeType
65371e38f1dSchristos         ',' QWordConstExpr
65471e38f1dSchristos         ',' QWordConstExpr
65571e38f1dSchristos         ',' QWordConstExpr
65671e38f1dSchristos         ',' QWordConstExpr
65771e38f1dSchristos         ',' QWordConstExpr
65871e38f1dSchristos         OptionalByteConstExpr
65971e38f1dSchristos         OptionalStringData
66071e38f1dSchristos         OptionalNameString
66171e38f1dSchristos         OptionalType
66271e38f1dSchristos         OptionalTranslationType_Last
66389b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
664d0e1da26Schristos                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
6650b89cdedSchristos     | PARSEOP_QWORDIO
6660b89cdedSchristos         PARSEOP_OPEN_PAREN
6670b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
66871e38f1dSchristos     ;
66971e38f1dSchristos 
67071e38f1dSchristos QWordMemoryTerm
6710b89cdedSchristos     : PARSEOP_QWORDMEMORY
67289b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDMEMORY);}
67371e38f1dSchristos         OptionalResourceType_First
67471e38f1dSchristos         OptionalDecodeType
67571e38f1dSchristos         OptionalMinType
67671e38f1dSchristos         OptionalMaxType
67771e38f1dSchristos         OptionalMemType
67871e38f1dSchristos         ',' OptionalReadWriteKeyword
67971e38f1dSchristos         ',' QWordConstExpr
68071e38f1dSchristos         ',' QWordConstExpr
68171e38f1dSchristos         ',' QWordConstExpr
68271e38f1dSchristos         ',' QWordConstExpr
68371e38f1dSchristos         ',' QWordConstExpr
68471e38f1dSchristos         OptionalByteConstExpr
68571e38f1dSchristos         OptionalStringData
68671e38f1dSchristos         OptionalNameString
68771e38f1dSchristos         OptionalAddressRange
68871e38f1dSchristos         OptionalType_Last
68989b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
690d0e1da26Schristos                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
6910b89cdedSchristos     | PARSEOP_QWORDMEMORY
6920b89cdedSchristos         PARSEOP_OPEN_PAREN
6930b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
69471e38f1dSchristos     ;
69571e38f1dSchristos 
696*c7960b37Schristos QWordPccTerm
697*c7960b37Schristos     : PARSEOP_QWORDPCC
698*c7960b37Schristos         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDPCC);}
699*c7960b37Schristos         ByteConstExpr
700*c7960b37Schristos         OptionalByteConstExpr
701*c7960b37Schristos         OptionalStringData
702*c7960b37Schristos         OptionalNameString_Last
703*c7960b37Schristos         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
704*c7960b37Schristos                                                         $4,$5,$6,$7);}
705*c7960b37Schristos     | PARSEOP_QWORDPCC
706*c7960b37Schristos         PARSEOP_OPEN_PAREN
707*c7960b37Schristos         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
708*c7960b37Schristos     ;
709*c7960b37Schristos 
71071e38f1dSchristos QWordSpaceTerm
7110b89cdedSchristos     : PARSEOP_QWORDSPACE
71289b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDSPACE);}
71371e38f1dSchristos         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
71471e38f1dSchristos         OptionalResourceType
71571e38f1dSchristos         OptionalDecodeType
71671e38f1dSchristos         OptionalMinType
71771e38f1dSchristos         OptionalMaxType
71871e38f1dSchristos         ',' ByteConstExpr
71971e38f1dSchristos         ',' QWordConstExpr
72071e38f1dSchristos         ',' QWordConstExpr
72171e38f1dSchristos         ',' QWordConstExpr
72271e38f1dSchristos         ',' QWordConstExpr
72371e38f1dSchristos         ',' QWordConstExpr
72471e38f1dSchristos         OptionalByteConstExpr
72571e38f1dSchristos         OptionalStringData
72671e38f1dSchristos         OptionalNameString_Last
72789b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
728d0e1da26Schristos                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
7290b89cdedSchristos     | PARSEOP_QWORDSPACE
7300b89cdedSchristos         PARSEOP_OPEN_PAREN
7310b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
73271e38f1dSchristos     ;
73371e38f1dSchristos 
73471e38f1dSchristos RegisterTerm
7350b89cdedSchristos     : PARSEOP_REGISTER
73689b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_REGISTER);}
73771e38f1dSchristos         AddressSpaceKeyword
73871e38f1dSchristos         ',' ByteConstExpr
73971e38f1dSchristos         ',' ByteConstExpr
74071e38f1dSchristos         ',' QWordConstExpr
74171e38f1dSchristos         OptionalAccessSize
74271e38f1dSchristos         OptionalNameString_Last
74389b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
7440b89cdedSchristos     | PARSEOP_REGISTER
7450b89cdedSchristos         PARSEOP_OPEN_PAREN
7460b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
74771e38f1dSchristos     ;
74871e38f1dSchristos 
74971e38f1dSchristos SpiSerialBusTerm
7500b89cdedSchristos     : PARSEOP_SPI_SERIALBUS
75189b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS);}
75271e38f1dSchristos         WordConstExpr               /* 04: DeviceSelection */
75371e38f1dSchristos         OptionalDevicePolarity      /* 05: DevicePolarity */
75471e38f1dSchristos         OptionalWireMode            /* 06: WireMode */
75571e38f1dSchristos         ',' ByteConstExpr           /* 08: DataBitLength */
75671e38f1dSchristos         OptionalSlaveMode           /* 09: SlaveMode */
75771e38f1dSchristos         ',' DWordConstExpr          /* 11: ConnectionSpeed */
75871e38f1dSchristos         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
75971e38f1dSchristos         ',' ClockPhaseKeyword       /* 15: ClockPhase */
76071e38f1dSchristos         ',' StringData              /* 17: ResourceSource */
76171e38f1dSchristos         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
76271e38f1dSchristos         OptionalResourceType        /* 19: ResourceType */
76371e38f1dSchristos         OptionalNameString          /* 20: DescriptorName */
76471e38f1dSchristos         OptionalBuffer_Last         /* 21: VendorData */
76589b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
766d0e1da26Schristos                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
76789b8eb6cSchristos                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
7680b89cdedSchristos     | PARSEOP_SPI_SERIALBUS
7690b89cdedSchristos         PARSEOP_OPEN_PAREN
7700b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
77171e38f1dSchristos     ;
77271e38f1dSchristos 
773cfbb7280Schristos SpiSerialBusTermV2
7740b89cdedSchristos     : PARSEOP_SPI_SERIALBUS_V2
77589b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS_V2);}
776cfbb7280Schristos         WordConstExpr               /* 04: DeviceSelection */
777cfbb7280Schristos         OptionalDevicePolarity      /* 05: DevicePolarity */
778cfbb7280Schristos         OptionalWireMode            /* 06: WireMode */
779cfbb7280Schristos         ',' ByteConstExpr           /* 08: DataBitLength */
780cfbb7280Schristos         OptionalSlaveMode           /* 09: SlaveMode */
781cfbb7280Schristos         ',' DWordConstExpr          /* 11: ConnectionSpeed */
782cfbb7280Schristos         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
783cfbb7280Schristos         ',' ClockPhaseKeyword       /* 15: ClockPhase */
784cfbb7280Schristos         ',' StringData              /* 17: ResourceSource */
785cfbb7280Schristos         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
786cfbb7280Schristos         OptionalResourceType        /* 19: ResourceType */
787cfbb7280Schristos         OptionalNameString          /* 20: DescriptorName */
788cfbb7280Schristos         OptionalShareType           /* 21: Share */
789cfbb7280Schristos         OptionalBuffer_Last         /* 22: VendorData */
79089b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
791d0e1da26Schristos                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
7920b89cdedSchristos     | PARSEOP_SPI_SERIALBUS_V2
7930b89cdedSchristos         PARSEOP_OPEN_PAREN
7940b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
795cfbb7280Schristos     ;
796cfbb7280Schristos 
79771e38f1dSchristos StartDependentFnNoPriTerm
7980b89cdedSchristos     : PARSEOP_STARTDEPENDENTFN_NOPRI
79989b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN_NOPRI);}
8000b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
80189b8eb6cSchristos         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,1,$6);}
8020b89cdedSchristos     | PARSEOP_STARTDEPENDENTFN_NOPRI
8030b89cdedSchristos         PARSEOP_OPEN_PAREN
8040b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
80571e38f1dSchristos     ;
80671e38f1dSchristos 
80771e38f1dSchristos StartDependentFnTerm
8080b89cdedSchristos     : PARSEOP_STARTDEPENDENTFN
80989b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN);}
81071e38f1dSchristos         ByteConstExpr
81171e38f1dSchristos         ',' ByteConstExpr
8120b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
81389b8eb6cSchristos         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$9);}
8140b89cdedSchristos     | PARSEOP_STARTDEPENDENTFN
8150b89cdedSchristos         PARSEOP_OPEN_PAREN
8160b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
81771e38f1dSchristos     ;
81871e38f1dSchristos 
81971e38f1dSchristos UartSerialBusTerm
8200b89cdedSchristos     : PARSEOP_UART_SERIALBUS
82189b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS);}
82271e38f1dSchristos         DWordConstExpr              /* 04: ConnectionSpeed */
82371e38f1dSchristos         OptionalBitsPerByte         /* 05: BitsPerByte */
82471e38f1dSchristos         OptionalStopBits            /* 06: StopBits */
82571e38f1dSchristos         ',' ByteConstExpr           /* 08: LinesInUse */
82694783addSchristos         OptionalEndian              /* 09: Endianness */
82771e38f1dSchristos         OptionalParityType          /* 10: Parity */
82871e38f1dSchristos         OptionalFlowControl         /* 11: FlowControl */
82971e38f1dSchristos         ',' WordConstExpr           /* 13: Rx BufferSize */
83071e38f1dSchristos         ',' WordConstExpr           /* 15: Tx BufferSize */
83171e38f1dSchristos         ',' StringData              /* 17: ResourceSource */
83271e38f1dSchristos         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
83371e38f1dSchristos         OptionalResourceType        /* 19: ResourceType */
83471e38f1dSchristos         OptionalNameString          /* 20: DescriptorName */
83571e38f1dSchristos         OptionalBuffer_Last         /* 21: VendorData */
83689b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
837d0e1da26Schristos                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
83889b8eb6cSchristos                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
8390b89cdedSchristos     | PARSEOP_UART_SERIALBUS
8400b89cdedSchristos         PARSEOP_OPEN_PAREN
8410b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
84271e38f1dSchristos     ;
84371e38f1dSchristos 
844cfbb7280Schristos UartSerialBusTermV2
8450b89cdedSchristos     : PARSEOP_UART_SERIALBUS_V2
84689b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS_V2);}
847cfbb7280Schristos         DWordConstExpr              /* 04: ConnectionSpeed */
848cfbb7280Schristos         OptionalBitsPerByte         /* 05: BitsPerByte */
849cfbb7280Schristos         OptionalStopBits            /* 06: StopBits */
850cfbb7280Schristos         ',' ByteConstExpr           /* 08: LinesInUse */
85194783addSchristos         OptionalEndian              /* 09: Endianness */
852cfbb7280Schristos         OptionalParityType          /* 10: Parity */
853cfbb7280Schristos         OptionalFlowControl         /* 11: FlowControl */
854cfbb7280Schristos         ',' WordConstExpr           /* 13: Rx BufferSize */
855cfbb7280Schristos         ',' WordConstExpr           /* 15: Tx BufferSize */
856cfbb7280Schristos         ',' StringData              /* 17: ResourceSource */
857cfbb7280Schristos         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
858cfbb7280Schristos         OptionalResourceType        /* 19: ResourceType */
859cfbb7280Schristos         OptionalNameString          /* 20: DescriptorName */
860cfbb7280Schristos         OptionalShareType           /* 21: Share */
861cfbb7280Schristos         OptionalBuffer_Last         /* 22: VendorData */
86289b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
863d0e1da26Schristos                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
8640b89cdedSchristos     | PARSEOP_UART_SERIALBUS_V2
8650b89cdedSchristos         PARSEOP_OPEN_PAREN
8660b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
867cfbb7280Schristos     ;
868cfbb7280Schristos 
86971e38f1dSchristos VendorLongTerm
8700b89cdedSchristos     : PARSEOP_VENDORLONG
87189b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORLONG);}
87271e38f1dSchristos         OptionalNameString_First
8730b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
87489b8eb6cSchristos             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
8750b89cdedSchristos     | PARSEOP_VENDORLONG
8760b89cdedSchristos         PARSEOP_OPEN_PAREN
8770b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
87871e38f1dSchristos     ;
87971e38f1dSchristos 
88071e38f1dSchristos VendorShortTerm
8810b89cdedSchristos     : PARSEOP_VENDORSHORT
88289b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORSHORT);}
88371e38f1dSchristos         OptionalNameString_First
8840b89cdedSchristos         PARSEOP_CLOSE_PAREN '{'
88589b8eb6cSchristos             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
8860b89cdedSchristos     | PARSEOP_VENDORSHORT
8870b89cdedSchristos         PARSEOP_OPEN_PAREN
8880b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
88971e38f1dSchristos     ;
89071e38f1dSchristos 
89171e38f1dSchristos WordBusNumberTerm
8920b89cdedSchristos     : PARSEOP_WORDBUSNUMBER
89389b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDBUSNUMBER);}
89471e38f1dSchristos         OptionalResourceType_First
89571e38f1dSchristos         OptionalMinType
89671e38f1dSchristos         OptionalMaxType
89771e38f1dSchristos         OptionalDecodeType
89871e38f1dSchristos         ',' WordConstExpr
89971e38f1dSchristos         ',' WordConstExpr
90071e38f1dSchristos         ',' WordConstExpr
90171e38f1dSchristos         ',' WordConstExpr
90271e38f1dSchristos         ',' WordConstExpr
90371e38f1dSchristos         OptionalByteConstExpr
90471e38f1dSchristos         OptionalStringData
90571e38f1dSchristos         OptionalNameString_Last
90689b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,12,
907d0e1da26Schristos                                         $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
9080b89cdedSchristos     | PARSEOP_WORDBUSNUMBER
9090b89cdedSchristos         PARSEOP_OPEN_PAREN
9100b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
91171e38f1dSchristos     ;
91271e38f1dSchristos 
91371e38f1dSchristos WordIOTerm
9140b89cdedSchristos     : PARSEOP_WORDIO
91589b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDIO);}
91671e38f1dSchristos         OptionalResourceType_First
91771e38f1dSchristos         OptionalMinType
91871e38f1dSchristos         OptionalMaxType
91971e38f1dSchristos         OptionalDecodeType
92071e38f1dSchristos         OptionalRangeType
92171e38f1dSchristos         ',' WordConstExpr
92271e38f1dSchristos         ',' WordConstExpr
92371e38f1dSchristos         ',' WordConstExpr
92471e38f1dSchristos         ',' WordConstExpr
92571e38f1dSchristos         ',' WordConstExpr
92671e38f1dSchristos         OptionalByteConstExpr
92771e38f1dSchristos         OptionalStringData
92871e38f1dSchristos         OptionalNameString
92971e38f1dSchristos         OptionalType
93071e38f1dSchristos         OptionalTranslationType_Last
93189b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
932d0e1da26Schristos                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
9330b89cdedSchristos     | PARSEOP_WORDIO
9340b89cdedSchristos         PARSEOP_OPEN_PAREN
9350b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
93671e38f1dSchristos     ;
93771e38f1dSchristos 
938*c7960b37Schristos WordPccTerm
939*c7960b37Schristos     : PARSEOP_WORDPCC
940*c7960b37Schristos         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_WORDPCC);}
941*c7960b37Schristos         ByteConstExpr
942*c7960b37Schristos         OptionalByteConstExpr
943*c7960b37Schristos         OptionalStringData
944*c7960b37Schristos         OptionalNameString_Last
945*c7960b37Schristos         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
946*c7960b37Schristos                                                         $4,$5,$6,$7);}
947*c7960b37Schristos     | PARSEOP_WORDPCC
948*c7960b37Schristos         PARSEOP_OPEN_PAREN
949*c7960b37Schristos         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
950*c7960b37Schristos     ;
951*c7960b37Schristos 
95271e38f1dSchristos WordSpaceTerm
9530b89cdedSchristos     : PARSEOP_WORDSPACE
95489b8eb6cSchristos         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDSPACE);}
95571e38f1dSchristos         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
95671e38f1dSchristos         OptionalResourceType
95771e38f1dSchristos         OptionalDecodeType
95871e38f1dSchristos         OptionalMinType
95971e38f1dSchristos         OptionalMaxType
96071e38f1dSchristos         ',' ByteConstExpr
96171e38f1dSchristos         ',' WordConstExpr
96271e38f1dSchristos         ',' WordConstExpr
96371e38f1dSchristos         ',' WordConstExpr
96471e38f1dSchristos         ',' WordConstExpr
96571e38f1dSchristos         ',' WordConstExpr
96671e38f1dSchristos         OptionalByteConstExpr
96771e38f1dSchristos         OptionalStringData
96871e38f1dSchristos         OptionalNameString_Last
96989b8eb6cSchristos         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
970d0e1da26Schristos                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
9710b89cdedSchristos     | PARSEOP_WORDSPACE
9720b89cdedSchristos         PARSEOP_OPEN_PAREN
9730b89cdedSchristos         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
97471e38f1dSchristos     ;
975