1    /*
2     * Some or all of this work - Copyright (c) 2006 - 2021, Intel Corp.
3     * All rights reserved.
4     *
5     * Redistribution and use in source and binary forms, with or without modification,
6     * are permitted provided that the following conditions are met:
7     *
8     * Redistributions of source code must retain the above copyright notice,
9     * this list of conditions and the following disclaimer.
10     * Redistributions in binary form must reproduce the above copyright notice,
11     * this list of conditions and the following disclaimer in the documentation
12     * and/or other materials provided with the distribution.
13     * Neither the name of Intel Corporation nor the names of its contributors
14     * may be used to endorse or promote products derived from this software
15     * without specific prior written permission.
16     *
17     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20     * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24     * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25     * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27     */
28    /*
29     * Data type conversion and manipulation
30     */
31    /*
32     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
33     SEE: to be a few updated, see below
34     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
35     */
36    /* ObjectType, Type of object */
37    /* Check ObjectType operator for: */
38    /* - all the Types of objects, */
39    /* - all the ways Obtaining those objects, */
40    /* - all the ways Passing objects to ObjectType. */
41    /* */
42    /* Types     - {0-16}, see specs. */
43    /* Obtaining - different creating operators,... */
44    /* Passing   - immediately local, immediately global, */
45    /*             by ArgX, by LocalX,... */
46    Name (Z040, 0x28)
47    /* Global objects */
48
49    Name (N002, 0x90801020)
50    Name (N003, 0x9189192989396949)
51    Name (N005, "9876")
52    Name (B003, Buffer (0x04)
53    {
54         0x0C, 0x0D, 0x0E, 0x0F                           // ....
55    })
56    /* Exercise all the ways creating the source objects of different types */
57    /* */
58    /*  0 - Uninitialized */
59    /* */
60    /*  Integers */
61    /* */
62    /*      One, Ones, Zero, Revision, Timer          (compile error) */
63    /*      immediate 32-bit Integer constant imagine (compile error) */
64    /*      immediate 64-bit Integer constant imagine (compile error) */
65    /* */
66    /*  1 - 32-bit Integers */
67    /* */
68    /*      32-bit Integer passed by LocalX */
69    /*      32-bit Integer passed by ArgX */
70    /*      32-bit Integer passed by local Name */
71    /*      32-bit Integer passed by global Name */
72    /* */
73    /*  2 - 64-bit Integers */
74    /* */
75    /*      64-bit Integer passed by LocalX */
76    /*      64-bit Integer passed by ArgX */
77    /*      64-bit Integer passed by local Name */
78    /*      64-bit Integer passed by global Name */
79    /* */
80    /* String */
81    /* */
82    /*  3 - String */
83    /* */
84    /* Field Units */
85    /* */
86    /*  4 - Field Unit created by Field */
87    /*  5 - Field Unit created by BankField */
88    /*  6 - Field Unit created by IndexField */
89    /* */
90    /* Buffers */
91    /* */
92    /*    - buffer passed immediately (compile error) */
93    /*  7 - buffer passed by LocalX */
94    /*  8 - buffer passed by ArgX */
95    /*  9 - buffer passed by local Name */
96    /* 10 - buffer passed by global Name */
97    /* */
98    /* Buffer Fields */
99    /* */
100    /* 11 - CreateBitField          (bit field) */
101    /* 12 - CreateByteField         (byte field) */
102    /* 13 - CreateDWordField        (DWord field) */
103    /* 14 - CreateField      32-bit (arbitrary length bit field) */
104    /* 15 - CreateField      64-bit (arbitrary length bit field) */
105    /* 16 - CreateField      65-bit (arbitrary length bit field) */
106    /* 17 - CreateQWordField        (QWord field) */
107    /* 18 - CreateWordField         (Word field) */
108    /* */
109    /* 19 - Index, Index with String   (reference to Buffer Fields) */
110    /* 20 - Index, Index with Buffer   (reference to Buffer Fields) */
111    /* 21 - Index, Index with Package  (reference to object in Package) */
112    /* */
113    /* 22 - Data Table Operation Region */
114    /* 23 - Debug Object */
115    /* 24 - Device */
116    /* 25 - Event */
117    /* 26 - Method */
118    /* 27 - Function */
119    /* 28 - Mutex */
120    /* 29 - Operation Region */
121    /* 30 - Package */
122    /* 31 - Power Resource */
123    /* 32 - Processor */
124    /* 33 - Thermal Zone */
125    /* 34 - DDB Handle */
126    /* */
127    /* */
128    /* Name - add all other objects by the name and so on ... !!!!!!!!!!!!!!!!! */
129    /* */
130    /* */
131    /* Local7 - returned result */
132    /* */
133    Method (M0F1, 7, Serialized)
134    {
135        OperationRegion (R000, SystemMemory, 0x0100, 0x0100)
136        OperationRegion (R001, SystemMemory, 0x0100, 0x0100)
137        If (Arg1)
138        {
139            Local7 = 0x00
140        }
141
142        Switch (ToInteger (Arg1))
143        {
144            Case (0x00)
145            {
146                /* Uninitialized */
147                /*
148                 * Bug 9 fixed.
149                 * if (arg1) {
150                 *	Store(0, Local0)
151                 *	Store(0, Local1)
152                 *	Store(0, Local2)
153                 *	Store(0, Local3)
154                 *	Store(0, Local4)
155                 *	Store(0, Local5)
156                 *	Store(0, Local6)
157                 *	Store(0, Local7)
158                 * }
159                 */
160                Local7 = ObjectType (Local0)
161                If ((Local7 != C008))
162                {
163                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C008)
164                }
165
166                Local7 = ObjectType (Local1)
167                If ((Local7 != C008))
168                {
169                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C008)
170                }
171
172                Local7 = ObjectType (Local2)
173                If ((Local7 != C008))
174                {
175                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C008)
176                }
177
178                Local7 = ObjectType (Local3)
179                If ((Local7 != C008))
180                {
181                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C008)
182                }
183
184                Local7 = ObjectType (Local4)
185                If ((Local7 != C008))
186                {
187                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C008)
188                }
189
190                Local7 = ObjectType (Local5)
191                If ((Local7 != C008))
192                {
193                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C008)
194                }
195
196                Local7 = ObjectType (Local6)
197                If ((Local7 != C008))
198                {
199                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C008)
200                }
201            }
202            Case (0x01)
203            {
204                /* 32-bit Integers */
205                /* By LocalX */
206                Local0 = 0x12345678
207                Local7 = ObjectType (Local0)
208                If ((Local7 != C009))
209                {
210                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
211                }
212
213                If ((Local0 != 0x12345678))
214                {
215                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local0, 0x12345678)
216                }
217
218                /* By ArgX */
219
220                Local7 = ObjectType (Arg2)
221                If ((Local7 != C009))
222                {
223                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
224                }
225
226                If ((Arg2 != 0x81223344))
227                {
228                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Arg2, 0x81223344)
229                }
230
231                /* By Name locally */
232
233                Name (N000, 0x98127364)
234                Local7 = ObjectType (N000)
235                If ((Local7 != C009))
236                {
237                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
238                }
239
240                If ((N000 != 0x98127364))
241                {
242                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, N000, 0x98127364)
243                }
244
245                /* By Name globally */
246
247                Local7 = ObjectType (N002)
248                If ((Local7 != C009))
249                {
250                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
251                }
252
253                If ((N002 != 0x90801020))
254                {
255                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, N002, 0x90801020)
256                }
257
258                /* Not a Buffer in 32-bit mode */
259
260                Local0 = 0xA1B2C3D4E5C6E7F8
261                Local7 = ObjectType (Local0)
262                If ((Local7 != C009))
263                {
264                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
265                }
266            }
267            Case (0x02)
268            {
269                /* 64-bit Integers */
270
271                If ((F64 == 0x01))
272                {
273                    /* By LocalX */
274
275                    Local0 = 0xA1B2C3D4E5C6E7F8
276                    Local7 = ObjectType (Local0)
277                    If ((Local7 != C009))
278                    {
279                        ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
280                    }
281
282                    If ((Local0 != 0xA1B2C3D4E5C6E7F8))
283                    {
284                        ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local0, 0xA1B2C3D4E5C6E7F8)
285                    }
286
287                    /* By ArgX */
288
289                    Local7 = ObjectType (Arg2)
290                    If ((Local7 != C009))
291                    {
292                        ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
293                    }
294
295                    If ((Arg2 != 0xFABEFAC489501248))
296                    {
297                        ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Arg2, 0xFABEFAC489501248)
298                    }
299
300                    /* By Name locally */
301
302                    Name (N001, 0x9081122384356647)
303                    Local7 = ObjectType (N001)
304                    If ((Local7 != C009))
305                    {
306                        ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
307                    }
308
309                    If ((N001 != 0x9081122384356647))
310                    {
311                        ERR (Arg0, Z040, __LINE__, 0x00, 0x00, N001, 0x9081122384356647)
312                    }
313
314                    /* By Name globally */
315
316                    Local7 = ObjectType (N003)
317                    If ((Local7 != C009))
318                    {
319                        ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
320                    }
321
322                    If ((N003 != 0x9189192989396949))
323                    {
324                        ERR (Arg0, Z040, __LINE__, 0x00, 0x00, N003, 0x9189192989396949)
325                    }
326                }
327            }
328            Case (0x03)
329            {
330                /* String */
331                /* By LocalX */
332                Local0 = ""
333                Local7 = ObjectType (Local0)
334                If ((Local7 != C00A))
335                {
336                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00A)
337                }
338
339                Local0 = "1"
340                Local7 = ObjectType (Local0)
341                If ((Local7 != C00A))
342                {
343                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00A)
344                }
345
346                Local0 = "abcd"
347                Local7 = ObjectType (Local0)
348                If ((Local7 != C00A))
349                {
350                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00A)
351                }
352
353                Local0 = "qwrt"
354                Local7 = ObjectType (Local0)
355                If ((Local7 != C00A))
356                {
357                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00A)
358                }
359
360                /* By ArgX */
361
362                Local7 = ObjectType (Arg2)
363                If ((Local7 != C00A))
364                {
365                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00A)
366                }
367
368                If ((Arg2 != "zxcvbnm0912345678ok"))
369                {
370                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Arg2, "zxcvbnm0912345678ok")
371                }
372
373                /* By Name locally */
374
375                Name (N004, "")
376                Local7 = ObjectType (N004)
377                If ((Local7 != C00A))
378                {
379                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00A)
380                }
381
382                If ((N004 != ""))
383                {
384                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, N004, "")
385                }
386
387                /* By Name globally */
388
389                Local7 = ObjectType (N005)
390                If ((Local7 != C00A))
391                {
392                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00A)
393                }
394
395                If ((N005 != "9876"))
396                {
397                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, N005, "9876")
398                }
399            }
400            Case (0x04)
401            {
402                /* Field Unit */
403                /* OperationRegion(r000, SystemMemory, 0x100, 0x100) */
404                Field (R000, ByteAcc, NoLock, Preserve)
405                {
406                    F000,   8,
407                    F222,   32,
408                    F223,   57,
409                    F224,   64,
410                    F225,   71
411                }
412
413                F000 = 0x8D
414                Local7 = ObjectType (F000)
415                If ((Local7 != C00D))
416                {
417                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
418                }
419
420                If ((F000 != 0x8D))
421                {
422                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, F000, 0x8D)
423                }
424
425                Local7 = ObjectType (F222)
426                If ((Local7 != C00D))
427                {
428                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
429                }
430
431                Local7 = ObjectType (F223)
432                If ((Local7 != C00D))
433                {
434                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
435                }
436
437                Local7 = ObjectType (F224)
438                If ((Local7 != C00D))
439                {
440                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
441                }
442
443                Local7 = ObjectType (F225)
444                If ((Local7 != C00D))
445                {
446                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
447                }
448            }
449            Case (0x05)
450            {
451                /* BankField */
452                /* OperationRegion(r001, SystemMemory, 0x100, 0x100) */
453                Field (R001, ByteAcc, NoLock, Preserve)
454                {
455                    BNK0,   8
456                }
457
458                BankField (R001, BNK0, 0x00, ByteAcc, NoLock, Preserve)
459                {
460                    Offset (0x10),
461                    BKF0,   8
462                }
463
464                BKF0 = 0x95
465                Local7 = ObjectType (BKF0)
466                If ((Local7 != C00D))
467                {
468                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
469                }
470
471                If ((BKF0 != 0x95))
472                {
473                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, BKF0, 0x95)
474                }
475            }
476            Case (0x06)
477            {
478                /* IndexField */
479
480                OperationRegion (R002, SystemMemory, 0x0100, 0x0100)
481                Field (R002, ByteAcc, NoLock, Preserve)
482                {
483                    F00A,   16,
484                    F00B,   16
485                }
486
487                IndexField (F00A, F00B, ByteAcc, NoLock, Preserve)
488                {
489                    IF00,   8,
490                    IF01,   8
491                }
492
493                F00A = 0xA0
494                F00B = 0xA1
495                IF00 = 0xA2
496                IF01 = 0xA3
497                Local7 = ObjectType (F00A)
498                If ((Local7 != C00D))
499                {
500                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
501                }
502
503                Local7 = ObjectType (F00B)
504                If ((Local7 != C00D))
505                {
506                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
507                }
508
509                Local7 = ObjectType (IF00)
510                If ((Local7 != C00D))
511                {
512                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
513                }
514
515                Local7 = ObjectType (IF01)
516                If ((Local7 != C00D))
517                {
518                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00D)
519                }
520            }
521            Case (0x07)
522            {
523                /* Buffer */
524
525                Local0 = Buffer (0x04)
526                    {
527                         0x00, 0x01, 0x02, 0x03                           // ....
528                    }
529                Local7 = ObjectType (Local0)
530                If ((Local7 != C00B))
531                {
532                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00B)
533                }
534
535                If ((Local0 != Buffer (0x04)
536                            {
537                                 0x00, 0x01, 0x02, 0x03                           // ....
538                            }))
539                {
540                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
541                }
542            }
543            Case (0x08)
544            {
545                /* Buffer */
546
547                Local7 = ObjectType (Arg2)
548                If ((Local7 != C00B))
549                {
550                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00B)
551                }
552
553                If ((Arg2 != Buffer (0x04)
554                            {
555                                 0x04, 0x05, 0x06, 0x07                           // ....
556                            }))
557                {
558                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
559                }
560            }
561            Case (0x09)
562            {
563                /* Buffer */
564
565                Name (B000, Buffer (0x04)
566                {
567                     0x08, 0x09, 0x0A, 0x0B                           // ....
568                })
569                Local7 = ObjectType (B000)
570                If ((Local7 != C00B))
571                {
572                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00B)
573                }
574
575                If ((B000 != Buffer (0x04)
576                            {
577                                 0x08, 0x09, 0x0A, 0x0B                           // ....
578                            }))
579                {
580                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
581                }
582            }
583            Case (0x0A)
584            {
585                /* Buffer */
586
587                Local7 = ObjectType (B003)
588                If ((Local7 != C00B))
589                {
590                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00B)
591                }
592
593                If ((B003 != Buffer (0x04)
594                            {
595                                 0x0C, 0x0D, 0x0E, 0x0F                           // ....
596                            }))
597                {
598                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
599                }
600            }
601            Case (0x0B)
602            {
603                /* Buffer Field */
604
605                Local0 = Buffer (0x04)
606                    {
607                         0x10, 0x11, 0x12, 0x13                           // ....
608                    }
609                CreateBitField (Local0, 0x03, F001)
610                Local7 = ObjectType (F001)
611                If ((Local7 != C016))
612                {
613                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
614                }
615
616                If ((Local0 != Buffer (0x04)
617                            {
618                                 0x10, 0x11, 0x12, 0x13                           // ....
619                            }))
620                {
621                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
622                }
623            }
624            Case (0x0C)
625            {
626                /* Buffer Field */
627
628                Local0 = Buffer (0x04)
629                    {
630                         0x14, 0x15, 0x16, 0x17                           // ....
631                    }
632                CreateByteField (Local0, 0x03, F002)
633                Local7 = ObjectType (F002)
634                If ((Local7 != C016))
635                {
636                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
637                }
638
639                If ((Local0 != Buffer (0x04)
640                            {
641                                 0x14, 0x15, 0x16, 0x17                           // ....
642                            }))
643                {
644                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
645                }
646            }
647            Case (0x0D)
648            {
649                /* Buffer Field */
650
651                Local0 = Buffer (0x04)
652                    {
653                         0x18, 0x19, 0x1A, 0x1B                           // ....
654                    }
655                CreateDWordField (Local0, 0x00, F003)
656                Local7 = ObjectType (F003)
657                If ((Local7 != C016))
658                {
659                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
660                }
661
662                If ((Local0 != Buffer (0x04)
663                            {
664                                 0x18, 0x19, 0x1A, 0x1B                           // ....
665                            }))
666                {
667                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
668                }
669            }
670            Case (0x0E)
671            {
672                /* Buffer Field */
673
674                Local0 = Buffer (0x04)
675                    {
676                         0x1C, 0x1D, 0x1E, 0x1F                           // ....
677                    }
678                CreateField (Local0, 0x00, 0x20, F004)
679                Local7 = ObjectType (F004)
680                If ((Local7 != C016))
681                {
682                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
683                }
684
685                If ((Local0 != Buffer (0x04)
686                            {
687                                 0x1C, 0x1D, 0x1E, 0x1F                           // ....
688                            }))
689                {
690                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
691                }
692            }
693            Case (0x0F)
694            {
695                /* Buffer Field */
696
697                Local0 = Buffer (0x09)
698                    {
699                        /* 0000 */  0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,  // !"#$%&'(
700                        /* 0008 */  0x29                                             // )
701                    }
702                CreateField (Local0, 0x00, 0x40, F005)
703                Local7 = ObjectType (F005)
704                If ((Local7 != C016))
705                {
706                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
707                }
708
709                If ((Local0 != Buffer (0x09)
710                            {
711                                /* 0000 */  0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,  // !"#$%&'(
712                                /* 0008 */  0x29                                             // )
713                            }))
714                {
715                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
716                }
717            }
718            Case (0x10)
719            {
720                /* Buffer Field */
721
722                Local0 = Buffer (0x09)
723                    {
724                        /* 0000 */  0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31,  // *+,-./01
725                        /* 0008 */  0x32                                             // 2
726                    }
727                CreateField (Local0, 0x00, 0x41, F006)
728                Local7 = ObjectType (F006)
729                If ((Local7 != C016))
730                {
731                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
732                }
733
734                If ((Local0 != Buffer (0x09)
735                            {
736                                /* 0000 */  0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31,  // *+,-./01
737                                /* 0008 */  0x32                                             // 2
738                            }))
739                {
740                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
741                }
742
743                CreateField (Local0, 0x00, 0x11, F111)
744                Local7 = ObjectType (F111)
745                If ((Local7 != C016))
746                {
747                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
748                }
749
750                CreateField (Local0, 0x00, 0x39, F112)
751                Local7 = ObjectType (F112)
752                If ((Local7 != C016))
753                {
754                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
755                }
756            }
757            Case (0x11)
758            {
759                /* Buffer Field */
760
761                Local0 = Buffer (0x09)
762                    {
763                        /* 0000 */  0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31,  // *+,-./01
764                        /* 0008 */  0x32                                             // 2
765                    }
766                CreateQWordField (Local0, 0x00, F007)
767                Local7 = ObjectType (F007)
768                If ((Local7 != C016))
769                {
770                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
771                }
772
773                If ((Local0 != Buffer (0x09)
774                            {
775                                /* 0000 */  0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31,  // *+,-./01
776                                /* 0008 */  0x32                                             // 2
777                            }))
778                {
779                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
780                }
781            }
782            Case (0x12)
783            {
784                /* Buffer Field */
785
786                Local0 = Buffer (0x04)
787                    {
788                         0x33, 0x34, 0x35, 0x36                           // 3456
789                    }
790                CreateWordField (Local0, 0x00, F008)
791                Local7 = ObjectType (F008)
792                If ((Local7 != C016))
793                {
794                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
795                }
796
797                If ((Local0 != Buffer (0x04)
798                            {
799                                 0x33, 0x34, 0x35, 0x36                           // 3456
800                            }))
801                {
802                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
803                }
804            }
805            Case (0x13)
806            {
807                /* Buffer Field */
808
809                Local0 = "q"
810                Store (Local0 [0x00], Local1)
811                Local7 = ObjectType (Local1)
812                If ((Local7 != C016))
813                {
814                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
815                }
816
817                If ((Local0 != "q"))
818                {
819                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
820                }
821
822                Local0 = "qw"
823                Store (Local0 [0x00], Local1)
824                Local7 = ObjectType (Local1)
825                If ((Local7 != C016))
826                {
827                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
828                }
829
830                If ((Local0 != "qw"))
831                {
832                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
833                }
834
835                Local0 = "qwertyu"
836                Store (Local0 [0x00], Local1)
837                Local7 = ObjectType (Local1)
838                If ((Local7 != C016))
839                {
840                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
841                }
842
843                If ((Local0 != "qwertyu"))
844                {
845                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
846                }
847
848                Local0 = "qwertyuiop"
849                Store (Local0 [0x00], Local1)
850                Local7 = ObjectType (Local1)
851                If ((Local7 != C016))
852                {
853                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
854                }
855
856                If ((Local0 != "qwertyuiop"))
857                {
858                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
859                }
860            }
861            Case (0x14)
862            {
863                /* Buffer Field */
864
865                Local0 = Buffer (0x04)
866                    {
867                         0x2A, 0x2B, 0x2C, 0x2D                           // *+,-
868                    }
869                Store (Local0 [0x00], Local1)
870                Local7 = ObjectType (Local1)
871                If ((Local7 != C016))
872                {
873                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
874                }
875
876                If ((Local0 != Buffer (0x04)
877                            {
878                                 0x2A, 0x2B, 0x2C, 0x2D                           // *+,-
879                            }))
880                {
881                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
882                }
883
884                Local0 = Buffer (0x08)
885                    {
886                         0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31   // *+,-./01
887                    }
888                Store (Local0 [0x00], Local1)
889                Local7 = ObjectType (Local1)
890                If ((Local7 != C016))
891                {
892                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
893                }
894
895                If ((Local0 != Buffer (0x08)
896                            {
897                                 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31   // *+,-./01
898                            }))
899                {
900                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
901                }
902
903                Local0 = Buffer (0x09)
904                    {
905                        /* 0000 */  0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31,  // *+,-./01
906                        /* 0008 */  0x32                                             // 2
907                    }
908                Store (Local0 [0x00], Local1)
909                Local7 = ObjectType (Local1)
910                If ((Local7 != C016))
911                {
912                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C016)
913                }
914
915                If ((Local0 != Buffer (0x09)
916                            {
917                                /* 0000 */  0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31,  // *+,-./01
918                                /* 0008 */  0x32                                             // 2
919                            }))
920                {
921                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
922                }
923            }
924            Case (0x15)
925            {
926                /* Index with ... */
927
928                Local0 = Package (0x04)
929                    {
930                        Package (0x04)
931                        {
932                            0x98765432,
933                            Buffer (0x01)
934                            {
935                                 0x12                                             // .
936                            },
937
938                            Package (0x01)
939                            {
940                                0x12345678
941                            },
942
943                            "qwertyui"
944                        },
945
946                        Buffer (0x01)
947                        {
948                             0x12                                             // .
949                        },
950
951                        "q",
952                        0x98765432
953                    }
954                /* Package */
955
956                Store (Local0 [0x00], Local1)
957                Local7 = ObjectType (Local1)
958                If ((Local7 != C00C))
959                {
960                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
961                }
962
963                /* Buffer */
964
965                Store (Local0 [0x01], Local1)
966                Local7 = ObjectType (Local1)
967                If ((Local7 != C00B))
968                {
969                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00B)
970                }
971
972                /* String */
973
974                Store (Local0 [0x02], Local1)
975                Local7 = ObjectType (Local1)
976                If ((Local7 != C00A))
977                {
978                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00A)
979                }
980
981                /* Integer */
982
983                Store (Local0 [0x03], Local1)
984                Local7 = ObjectType (Local1)
985                If ((Local7 != C009))
986                {
987                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C009)
988                }
989            }
990            Case (0x16)
991            {
992                /* Operation Region */
993
994                DataTableRegion (HDR0, "DSDT", "", "")
995                Local7 = ObjectType (HDR0)
996                If ((Local7 != C012))
997                {
998                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C012)
999                }
1000            }
1001            Case (0x17)
1002            {
1003                /* Debug Object */
1004
1005                Local7 = ObjectType (Debug)
1006                If ((Local7 != C018))
1007                {
1008                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C018)
1009                }
1010            }
1011            Case (0x18)
1012            {
1013                /* Device */
1014
1015                Device (DV00)
1016                {
1017                }
1018
1019                Local7 = ObjectType (DV00)
1020                If ((Local7 != C00E))
1021                {
1022                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00E)
1023                }
1024            }
1025            Case (0x19)
1026            {
1027                /* Event */
1028
1029                Event (EVT0)
1030                Local7 = ObjectType (EVT0)
1031                If ((Local7 != C00F))
1032                {
1033                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00F)
1034                }
1035            }
1036            Case (0x1A)
1037            {
1038                /* Method */
1039
1040                Method (M0F2, 0, NotSerialized)
1041                {
1042                    Return (0x1234)
1043                }
1044
1045                Local7 = ObjectType (M0F2)
1046                If ((Local7 != C010))
1047                {
1048                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C010)
1049                }
1050            }
1051            Case (0x1B)
1052            {
1053                        /*
1054             *			// Function
1055             *
1056             *			Function(mof3) { return (0) }
1057             *			Store(ObjectType(m0f3), Local7)
1058             *			if (LNotEqual(Local7, c010)) {
1059             *				err(arg0, z040, __LINE__, 0, 0, Local7, c010)
1060             *			}
1061             */
1062            }
1063            Case (0x1C)
1064            {
1065                /* Mutex */
1066
1067                Mutex (MT00, 0x00)
1068                Local7 = ObjectType (MT00)
1069                If ((Local7 != C011))
1070                {
1071                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C011)
1072                }
1073            }
1074            Case (0x1D)
1075            {
1076                /* Operation Region */
1077
1078                Local7 = ObjectType (R000)
1079                If ((Local7 != C012))
1080                {
1081                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C012)
1082                }
1083
1084                Local7 = ObjectType (R001)
1085                If ((Local7 != C012))
1086                {
1087                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C012)
1088                }
1089            }
1090            Case (0x1E)
1091            {
1092                /* Package */
1093
1094                Name (P000, Package (0x01)
1095                {
1096                    0x12345678
1097                })
1098                Name (P001, Package (0x02)
1099                {
1100                    0x12345678,
1101                    0x9ABCDEF0
1102                })
1103                Name (P002, Package (0x03)
1104                {
1105                    0x12345678,
1106                    0x9ABCDEF0,
1107                    0x9ABCDEF0
1108                })
1109                Name (P003, Package (0x01)
1110                {
1111                    0x123456789ABCDEF0
1112                })
1113                Name (P004, Package (0x02)
1114                {
1115                    0x123456789ABCDEF0,
1116                    0x123456789ABCDEF0
1117                })
1118                Name (P005, Package (0x03)
1119                {
1120                    0x123456789ABCDEF0,
1121                    0x123456789ABCDEF0,
1122                    0x123456789ABCDEF0
1123                })
1124                Name (P006, Package (0x01)
1125                {
1126                    Buffer (0x01){}
1127                })
1128                Name (P007, Package (0x01)
1129                {
1130                    Buffer (0x20){}
1131                })
1132                Name (P008, Package (0x01)
1133                {
1134                    Buffer (0x40){}
1135                })
1136                Name (P009, Package (0x01)
1137                {
1138                    Buffer (0x7D){}
1139                })
1140                Name (P00A, Package (0x02)
1141                {
1142                    0x12,
1143                    Buffer (0x01)
1144                    {
1145                         0x12                                             // .
1146                    }
1147                })
1148                Name (P00B, Package (0x02)
1149                {
1150                    0x12,
1151                    Package (0x01)
1152                    {
1153                        0x12
1154                    }
1155                })
1156                Name (P00C, Package (0x01)
1157                {
1158                    Buffer (0x01)
1159                    {
1160                         0x12                                             // .
1161                    }
1162                })
1163                Name (P00D, Package (0x02)
1164                {
1165                    Buffer (0x01)
1166                    {
1167                         0x12                                             // .
1168                    },
1169
1170                    0x12345678
1171                })
1172                Name (P00E, Package (0x02)
1173                {
1174                    Buffer (0x01)
1175                    {
1176                         0x12                                             // .
1177                    },
1178
1179                    Buffer (0x01)
1180                    {
1181                         0x12                                             // .
1182                    }
1183                })
1184                Name (P00F, Package (0x02)
1185                {
1186                    Buffer (0x01)
1187                    {
1188                         0x12                                             // .
1189                    },
1190
1191                    Package (0x01)
1192                    {
1193                        0x12
1194                    }
1195                })
1196                Name (P010, Package (0x01)
1197                {
1198                    Package (0x01)
1199                    {
1200                        0x12345678
1201                    }
1202                })
1203                Name (P011, Package (0x02)
1204                {
1205                    Package (0x01)
1206                    {
1207                        0x12345678
1208                    },
1209
1210                    0x12345678
1211                })
1212                Name (P012, Package (0x02)
1213                {
1214                    Package (0x01)
1215                    {
1216                        0x12345678
1217                    },
1218
1219                    Buffer (0x01)
1220                    {
1221                         0x12                                             // .
1222                    }
1223                })
1224                Name (P013, Package (0x02)
1225                {
1226                    Package (0x01)
1227                    {
1228                        0x12345678
1229                    },
1230
1231                    Package (0x01)
1232                    {
1233                        0x12
1234                    }
1235                })
1236                Local7 = ObjectType (P000)
1237                If ((Local7 != C00C))
1238                {
1239                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1240                }
1241
1242                Local7 = ObjectType (P001)
1243                If ((Local7 != C00C))
1244                {
1245                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1246                }
1247
1248                Local7 = ObjectType (P002)
1249                If ((Local7 != C00C))
1250                {
1251                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1252                }
1253
1254                Local7 = ObjectType (P003)
1255                If ((Local7 != C00C))
1256                {
1257                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1258                }
1259
1260                Local7 = ObjectType (P004)
1261                If ((Local7 != C00C))
1262                {
1263                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1264                }
1265
1266                Local7 = ObjectType (P005)
1267                If ((Local7 != C00C))
1268                {
1269                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1270                }
1271
1272                Local7 = ObjectType (P006)
1273                If ((Local7 != C00C))
1274                {
1275                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1276                }
1277
1278                Local7 = ObjectType (P007)
1279                If ((Local7 != C00C))
1280                {
1281                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1282                }
1283
1284                Local7 = ObjectType (P008)
1285                If ((Local7 != C00C))
1286                {
1287                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1288                }
1289
1290                Local7 = ObjectType (P009)
1291                If ((Local7 != C00C))
1292                {
1293                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1294                }
1295
1296                Local7 = ObjectType (P00A)
1297                If ((Local7 != C00C))
1298                {
1299                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1300                }
1301
1302                Local7 = ObjectType (P00B)
1303                If ((Local7 != C00C))
1304                {
1305                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1306                }
1307
1308                Local7 = ObjectType (P00C)
1309                If ((Local7 != C00C))
1310                {
1311                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1312                }
1313
1314                Local7 = ObjectType (P00D)
1315                If ((Local7 != C00C))
1316                {
1317                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1318                }
1319
1320                Local7 = ObjectType (P00E)
1321                If ((Local7 != C00C))
1322                {
1323                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1324                }
1325
1326                Local7 = ObjectType (P00F)
1327                If ((Local7 != C00C))
1328                {
1329                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1330                }
1331
1332                Local7 = ObjectType (P010)
1333                If ((Local7 != C00C))
1334                {
1335                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1336                }
1337
1338                Local7 = ObjectType (P011)
1339                If ((Local7 != C00C))
1340                {
1341                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1342                }
1343
1344                Local7 = ObjectType (P012)
1345                If ((Local7 != C00C))
1346                {
1347                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1348                }
1349
1350                Local7 = ObjectType (P013)
1351                If ((Local7 != C00C))
1352                {
1353                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C00C)
1354                }
1355            }
1356            Case (0x1F)
1357            {
1358                /* Power Resource */
1359
1360                PowerResource (PWR0, 0x01, 0x0000)
1361                {
1362                    Method (M000, 0, NotSerialized)
1363                    {
1364                        Return (0x00)
1365                    }
1366                }
1367
1368                Local7 = ObjectType (PWR0)
1369                If ((Local7 != C013))
1370                {
1371                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C013)
1372                }
1373            }
1374            Case (0x20)
1375            {
1376                /* Processor */
1377
1378                Processor (PR00, 0x00, 0xFFFFFFFF, 0x00){}
1379                Local7 = ObjectType (PR00)
1380                If ((Local7 != C014))
1381                {
1382                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C014)
1383                }
1384            }
1385            Case (0x21)
1386            {
1387                ThermalZone (TZ00)
1388                {
1389                }
1390
1391                Local7 = ObjectType (TZ00)
1392                If ((Local7 != C015))
1393                {
1394                    ERR (Arg0, Z040, __LINE__, 0x00, 0x00, Local7, C015)
1395                }
1396            }
1397            Case (0x22)
1398            {
1399                        /*
1400             // Reserved for DDB Handle
1401             Store("==================================== zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", Debug)
1402             //			Store (LoadTable ("OEM1", "MYOEM", "TABLE1", "\\_SB.PCI0", "MYD",
1403             //					 	Package () {0, "\\_SB.PCI0"}), Local0)
1404             Store (LoadTable("OEM1", "MYOEM", "TABLE1"), Local0)
1405             Store(ObjectType(Local0), Local7)
1406             if (LNotEqual(Local7, c017)) {
1407             err(arg0, z040, __LINE__, 0, 0, Local7, c017)
1408             }
1409             Store("==================================== uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu", Debug)
1410             */
1411            }
1412            Default
1413            {
1414                ERR (Arg0, Z040, __LINE__, 0x00, 0x00, 0x00, 0x00)
1415            }
1416
1417        }
1418
1419        Return (Local7)
1420    }
1421
1422    Method (M0F0, 0, Serialized)
1423    {
1424        Debug = "TEST: m0f0, ObjectType"
1425        Local5 = 0x00
1426        Local4 = 0x23
1427        While (Local4)
1428        {
1429            Local2 = 0x00
1430            Switch (ToInteger (Local5))
1431            {
1432                Case (0x01)
1433                {
1434                    Local2 = 0x81223344
1435                }
1436                Case (0x02)
1437                {
1438                    Local2 = 0xFABEFAC489501248
1439                }
1440                Case (0x03)
1441                {
1442                    Local2 = "zxcvbnm0912345678ok"
1443                }
1444                Case (0x08)
1445                {
1446                    Local2 = Buffer (0x04)
1447                        {
1448                             0x04, 0x05, 0x06, 0x07                           // ....
1449                        }
1450                }
1451
1452            }
1453
1454            M0F1 (__METHOD__, Local5, Local2, 0x00, 0x00, 0x00, 0x00)
1455            Local5++
1456            Local4--
1457        }
1458    }
1459
1460    /* Run-method */
1461
1462    Method (OBT0, 0, NotSerialized)
1463    {
1464        Debug = "TEST: OBT0, Type of object"
1465        M0F0 ()
1466    }
1467