aslbtypes.c revision 218590
1218585Sjkim/******************************************************************************
2218585Sjkim *
3218585Sjkim * Module Name: aslbtypes - Support for bitfield types
4218585Sjkim *
5218585Sjkim *****************************************************************************/
6218585Sjkim
7218585Sjkim/*
8218585Sjkim * Copyright (C) 2000 - 2011, Intel Corp.
9218585Sjkim * All rights reserved.
10218585Sjkim *
11218585Sjkim * Redistribution and use in source and binary forms, with or without
12218585Sjkim * modification, are permitted provided that the following conditions
13218585Sjkim * are met:
14218585Sjkim * 1. Redistributions of source code must retain the above copyright
15218585Sjkim *    notice, this list of conditions, and the following disclaimer,
16218585Sjkim *    without modification.
17218585Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18218585Sjkim *    substantially similar to the "NO WARRANTY" disclaimer below
19218585Sjkim *    ("Disclaimer") and any redistribution must be conditioned upon
20218585Sjkim *    including a substantially similar Disclaimer requirement for further
21218585Sjkim *    binary redistribution.
22218585Sjkim * 3. Neither the names of the above-listed copyright holders nor the names
23218585Sjkim *    of any contributors may be used to endorse or promote products derived
24218585Sjkim *    from this software without specific prior written permission.
25218585Sjkim *
26218585Sjkim * Alternatively, this software may be distributed under the terms of the
27218585Sjkim * GNU General Public License ("GPL") version 2 as published by the Free
28218585Sjkim * Software Foundation.
29218585Sjkim *
30218585Sjkim * NO WARRANTY
31218585Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32218585Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33218585Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34218585Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35218585Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36218585Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37218585Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38218585Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39218585Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40218585Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41218585Sjkim * POSSIBILITY OF SUCH DAMAGES.
42218585Sjkim */
43218585Sjkim
44218585Sjkim
45218590Sjkim#include <contrib/dev/acpica/compiler/aslcompiler.h>
46218585Sjkim#include "aslcompiler.y.h"
47218590Sjkim#include <contrib/dev/acpica/include/amlcode.h>
48218585Sjkim
49218585Sjkim
50218585Sjkim#define _COMPONENT          ACPI_COMPILER
51218585Sjkim        ACPI_MODULE_NAME    ("aslbtypes")
52218585Sjkim
53218585Sjkim/* Local prototypes */
54218585Sjkim
55218585Sjkimstatic UINT32
56218585SjkimAnMapEtypeToBtype (
57218585Sjkim    UINT32                  Etype);
58218585Sjkim
59218585Sjkim
60218585Sjkim/*******************************************************************************
61218585Sjkim *
62218585Sjkim * FUNCTION:    AnMapArgTypeToBtype
63218585Sjkim *
64218585Sjkim * PARAMETERS:  ArgType             - The ARGI required type(s) for this
65218585Sjkim *                                    argument, from the opcode info table
66218585Sjkim *
67218585Sjkim * RETURN:      The corresponding Bit-encoded types
68218585Sjkim *
69218585Sjkim * DESCRIPTION: Convert an encoded ARGI required argument type code into a
70218585Sjkim *              bitfield type code. Implements the implicit source conversion
71218585Sjkim *              rules.
72218585Sjkim *
73218585Sjkim ******************************************************************************/
74218585Sjkim
75218585SjkimUINT32
76218585SjkimAnMapArgTypeToBtype (
77218585Sjkim    UINT32                  ArgType)
78218585Sjkim{
79218585Sjkim
80218585Sjkim    switch (ArgType)
81218585Sjkim    {
82218585Sjkim
83218585Sjkim    /* Simple types */
84218585Sjkim
85218585Sjkim    case ARGI_ANYTYPE:
86218585Sjkim        return (ACPI_BTYPE_OBJECTS_AND_REFS);
87218585Sjkim
88218585Sjkim    case ARGI_PACKAGE:
89218585Sjkim        return (ACPI_BTYPE_PACKAGE);
90218585Sjkim
91218585Sjkim    case ARGI_EVENT:
92218585Sjkim        return (ACPI_BTYPE_EVENT);
93218585Sjkim
94218585Sjkim    case ARGI_MUTEX:
95218585Sjkim        return (ACPI_BTYPE_MUTEX);
96218585Sjkim
97218585Sjkim    case ARGI_DDBHANDLE:
98218585Sjkim        /*
99218585Sjkim         * DDBHandleObject := SuperName
100218585Sjkim         * ACPI_BTYPE_REFERENCE: Index reference as parameter of Load/Unload
101218585Sjkim         */
102218585Sjkim        return (ACPI_BTYPE_DDB_HANDLE | ACPI_BTYPE_REFERENCE);
103218585Sjkim
104218585Sjkim    /* Interchangeable types */
105218585Sjkim    /*
106218585Sjkim     * Source conversion rules:
107218585Sjkim     * Integer, String, and Buffer are all interchangeable
108218585Sjkim     */
109218585Sjkim    case ARGI_INTEGER:
110218585Sjkim    case ARGI_STRING:
111218585Sjkim    case ARGI_BUFFER:
112218585Sjkim    case ARGI_BUFFER_OR_STRING:
113218585Sjkim    case ARGI_COMPUTEDATA:
114218585Sjkim        return (ACPI_BTYPE_COMPUTE_DATA);
115218585Sjkim
116218585Sjkim    /* References */
117218585Sjkim
118218585Sjkim    case ARGI_INTEGER_REF:
119218585Sjkim        return (ACPI_BTYPE_INTEGER);
120218585Sjkim
121218585Sjkim    case ARGI_OBJECT_REF:
122218585Sjkim        return (ACPI_BTYPE_ALL_OBJECTS);
123218585Sjkim
124218585Sjkim    case ARGI_DEVICE_REF:
125218585Sjkim        return (ACPI_BTYPE_DEVICE_OBJECTS);
126218585Sjkim
127218585Sjkim    case ARGI_REFERENCE:
128218585Sjkim        return (ACPI_BTYPE_REFERENCE);
129218585Sjkim
130218585Sjkim    case ARGI_TARGETREF:
131218585Sjkim    case ARGI_FIXED_TARGET:
132218585Sjkim    case ARGI_SIMPLE_TARGET:
133218585Sjkim        return (ACPI_BTYPE_OBJECTS_AND_REFS);
134218585Sjkim
135218585Sjkim    /* Complex types */
136218585Sjkim
137218585Sjkim    case ARGI_DATAOBJECT:
138218585Sjkim
139218585Sjkim        /*
140218585Sjkim         * Buffer, string, package or reference to a Op -
141218585Sjkim         * Used only by SizeOf operator
142218585Sjkim         */
143218585Sjkim        return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER |
144218585Sjkim            ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE);
145218585Sjkim
146218585Sjkim    case ARGI_COMPLEXOBJ:
147218585Sjkim
148218585Sjkim        /* Buffer, String, or package */
149218585Sjkim
150218585Sjkim        return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | ACPI_BTYPE_PACKAGE);
151218585Sjkim
152218585Sjkim    case ARGI_REF_OR_STRING:
153218585Sjkim        return (ACPI_BTYPE_STRING | ACPI_BTYPE_REFERENCE);
154218585Sjkim
155218585Sjkim    case ARGI_REGION_OR_BUFFER:
156218585Sjkim
157218585Sjkim        /* Used by Load() only. Allow buffers in addition to regions/fields */
158218585Sjkim
159218585Sjkim        return (ACPI_BTYPE_REGION | ACPI_BTYPE_BUFFER | ACPI_BTYPE_FIELD_UNIT);
160218585Sjkim
161218585Sjkim    case ARGI_DATAREFOBJ:
162218585Sjkim        return (ACPI_BTYPE_INTEGER |ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER |
163218585Sjkim            ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE);
164218585Sjkim
165218585Sjkim    default:
166218585Sjkim        break;
167218585Sjkim    }
168218585Sjkim
169218585Sjkim    return (ACPI_BTYPE_OBJECTS_AND_REFS);
170218585Sjkim}
171218585Sjkim
172218585Sjkim
173218585Sjkim/*******************************************************************************
174218585Sjkim *
175218585Sjkim * FUNCTION:    AnMapEtypeToBtype
176218585Sjkim *
177218585Sjkim * PARAMETERS:  Etype               - Encoded ACPI Type
178218585Sjkim *
179218585Sjkim * RETURN:      Btype corresponding to the Etype
180218585Sjkim *
181218585Sjkim * DESCRIPTION: Convert an encoded ACPI type to a bitfield type applying the
182218585Sjkim *              operand conversion rules. In other words, returns the type(s)
183218585Sjkim *              this Etype is implicitly converted to during interpretation.
184218585Sjkim *
185218585Sjkim ******************************************************************************/
186218585Sjkim
187218585Sjkimstatic UINT32
188218585SjkimAnMapEtypeToBtype (
189218585Sjkim    UINT32                  Etype)
190218585Sjkim{
191218585Sjkim
192218585Sjkim
193218585Sjkim    if (Etype == ACPI_TYPE_ANY)
194218585Sjkim    {
195218585Sjkim        return (ACPI_BTYPE_OBJECTS_AND_REFS);
196218585Sjkim    }
197218585Sjkim
198218585Sjkim    /* Try the standard ACPI data types */
199218585Sjkim
200218585Sjkim    if (Etype <= ACPI_TYPE_EXTERNAL_MAX)
201218585Sjkim    {
202218585Sjkim        /*
203218585Sjkim         * This switch statement implements the allowed operand conversion
204218585Sjkim         * rules as per the "ASL Data Types" section of the ACPI
205218585Sjkim         * specification.
206218585Sjkim         */
207218585Sjkim        switch (Etype)
208218585Sjkim        {
209218585Sjkim        case ACPI_TYPE_INTEGER:
210218585Sjkim            return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_DDB_HANDLE);
211218585Sjkim
212218585Sjkim        case ACPI_TYPE_STRING:
213218585Sjkim        case ACPI_TYPE_BUFFER:
214218585Sjkim            return (ACPI_BTYPE_COMPUTE_DATA);
215218585Sjkim
216218585Sjkim        case ACPI_TYPE_PACKAGE:
217218585Sjkim            return (ACPI_BTYPE_PACKAGE);
218218585Sjkim
219218585Sjkim        case ACPI_TYPE_FIELD_UNIT:
220218585Sjkim            return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT);
221218585Sjkim
222218585Sjkim        case ACPI_TYPE_BUFFER_FIELD:
223218585Sjkim            return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_BUFFER_FIELD);
224218585Sjkim
225218585Sjkim        case ACPI_TYPE_DDB_HANDLE:
226218585Sjkim            return (ACPI_BTYPE_INTEGER | ACPI_BTYPE_DDB_HANDLE);
227218585Sjkim
228218585Sjkim        case ACPI_BTYPE_DEBUG_OBJECT:
229218585Sjkim
230218585Sjkim            /* Cannot be used as a source operand */
231218585Sjkim
232218585Sjkim            return (0);
233218585Sjkim
234218585Sjkim        default:
235218585Sjkim            return (1 << (Etype - 1));
236218585Sjkim        }
237218585Sjkim    }
238218585Sjkim
239218585Sjkim    /* Try the internal data types */
240218585Sjkim
241218585Sjkim    switch (Etype)
242218585Sjkim    {
243218585Sjkim    case ACPI_TYPE_LOCAL_REGION_FIELD:
244218585Sjkim    case ACPI_TYPE_LOCAL_BANK_FIELD:
245218585Sjkim    case ACPI_TYPE_LOCAL_INDEX_FIELD:
246218585Sjkim
247218585Sjkim        /* Named fields can be either Integer/Buffer/String */
248218585Sjkim
249218585Sjkim        return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT);
250218585Sjkim
251218585Sjkim    case ACPI_TYPE_LOCAL_ALIAS:
252218585Sjkim
253218585Sjkim        return (ACPI_BTYPE_INTEGER);
254218585Sjkim
255218585Sjkim
256218585Sjkim    case ACPI_TYPE_LOCAL_RESOURCE:
257218585Sjkim    case ACPI_TYPE_LOCAL_RESOURCE_FIELD:
258218585Sjkim
259218585Sjkim        return (ACPI_BTYPE_REFERENCE);
260218585Sjkim
261218585Sjkim    default:
262218585Sjkim        printf ("Unhandled encoded type: %X\n", Etype);
263218585Sjkim        return (0);
264218585Sjkim    }
265218585Sjkim}
266218585Sjkim
267218585Sjkim
268218585Sjkim/*******************************************************************************
269218585Sjkim *
270218585Sjkim * FUNCTION:    AnFormatBtype
271218585Sjkim *
272218585Sjkim * PARAMETERS:  Btype               - Bitfield of ACPI types
273218585Sjkim *              Buffer              - Where to put the ascii string
274218585Sjkim *
275218585Sjkim * RETURN:      None.
276218585Sjkim *
277218585Sjkim * DESCRIPTION: Convert a Btype to a string of ACPI types
278218585Sjkim *
279218585Sjkim ******************************************************************************/
280218585Sjkim
281218585Sjkimvoid
282218585SjkimAnFormatBtype (
283218585Sjkim    char                    *Buffer,
284218585Sjkim    UINT32                  Btype)
285218585Sjkim{
286218585Sjkim    UINT32                  Type;
287218585Sjkim    BOOLEAN                 First = TRUE;
288218585Sjkim
289218585Sjkim
290218585Sjkim    *Buffer = 0;
291218585Sjkim
292218585Sjkim    if (Btype == 0)
293218585Sjkim    {
294218585Sjkim        strcat (Buffer, "NoReturnValue");
295218585Sjkim        return;
296218585Sjkim    }
297218585Sjkim
298218585Sjkim    for (Type = 1; Type <= ACPI_TYPE_EXTERNAL_MAX; Type++)
299218585Sjkim    {
300218585Sjkim        if (Btype & 0x00000001)
301218585Sjkim        {
302218585Sjkim            if (!First)
303218585Sjkim            {
304218585Sjkim                strcat (Buffer, "|");
305218585Sjkim            }
306218585Sjkim            First = FALSE;
307218585Sjkim            strcat (Buffer, AcpiUtGetTypeName (Type));
308218585Sjkim        }
309218585Sjkim        Btype >>= 1;
310218585Sjkim    }
311218585Sjkim
312218585Sjkim    if (Btype & 0x00000001)
313218585Sjkim    {
314218585Sjkim        if (!First)
315218585Sjkim        {
316218585Sjkim            strcat (Buffer, "|");
317218585Sjkim        }
318218585Sjkim        First = FALSE;
319218585Sjkim        strcat (Buffer, "Reference");
320218585Sjkim    }
321218585Sjkim
322218585Sjkim    Btype >>= 1;
323218585Sjkim    if (Btype & 0x00000001)
324218585Sjkim    {
325218585Sjkim        if (!First)
326218585Sjkim        {
327218585Sjkim            strcat (Buffer, "|");
328218585Sjkim        }
329218585Sjkim        First = FALSE;
330218585Sjkim        strcat (Buffer, "Resource");
331218585Sjkim    }
332218585Sjkim}
333218585Sjkim
334218585Sjkim
335218585Sjkim/*******************************************************************************
336218585Sjkim *
337218585Sjkim * FUNCTION:    AnGetBtype
338218585Sjkim *
339218585Sjkim * PARAMETERS:  Op                  - Parse node whose type will be returned.
340218585Sjkim *
341218585Sjkim * RETURN:      The Btype associated with the Op.
342218585Sjkim *
343218585Sjkim * DESCRIPTION: Get the (bitfield) ACPI type associated with the parse node.
344218585Sjkim *              Handles the case where the node is a name or method call and
345218585Sjkim *              the actual type must be obtained from the namespace node.
346218585Sjkim *
347218585Sjkim ******************************************************************************/
348218585Sjkim
349218585SjkimUINT32
350218585SjkimAnGetBtype (
351218585Sjkim    ACPI_PARSE_OBJECT       *Op)
352218585Sjkim{
353218585Sjkim    ACPI_NAMESPACE_NODE     *Node;
354218585Sjkim    ACPI_PARSE_OBJECT       *ReferencedNode;
355218585Sjkim    UINT32                  ThisNodeBtype = 0;
356218585Sjkim
357218585Sjkim
358218585Sjkim    if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG)     ||
359218585Sjkim        (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)  ||
360218585Sjkim        (Op->Asl.ParseOpcode == PARSEOP_METHODCALL))
361218585Sjkim    {
362218585Sjkim        Node = Op->Asl.Node;
363218585Sjkim        if (!Node)
364218585Sjkim        {
365218585Sjkim            DbgPrint (ASL_DEBUG_OUTPUT,
366218585Sjkim                "No attached Nsnode: [%s] at line %u name [%s], ignoring typecheck\n",
367218585Sjkim                Op->Asl.ParseOpName, Op->Asl.LineNumber,
368218585Sjkim                Op->Asl.ExternalName);
369218585Sjkim            return (ACPI_UINT32_MAX);
370218585Sjkim        }
371218585Sjkim
372218585Sjkim        ThisNodeBtype = AnMapEtypeToBtype (Node->Type);
373218585Sjkim        if (!ThisNodeBtype)
374218585Sjkim        {
375218585Sjkim            AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op,
376218585Sjkim                "could not map type");
377218585Sjkim        }
378218585Sjkim
379218585Sjkim        /*
380218585Sjkim         * Since it was a named reference, enable the
381218585Sjkim         * reference bit also
382218585Sjkim         */
383218585Sjkim        ThisNodeBtype |= ACPI_BTYPE_REFERENCE;
384218585Sjkim
385218585Sjkim        if (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)
386218585Sjkim        {
387218585Sjkim            ReferencedNode = Node->Op;
388218585Sjkim            if (!ReferencedNode)
389218585Sjkim            {
390218585Sjkim                /* Check for an internal method */
391218585Sjkim
392218585Sjkim                if (AnIsInternalMethod (Op))
393218585Sjkim                {
394218585Sjkim                    return (AnGetInternalMethodReturnType (Op));
395218585Sjkim                }
396218585Sjkim
397218585Sjkim                AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op,
398218585Sjkim                    "null Op pointer");
399218585Sjkim                return (ACPI_UINT32_MAX);
400218585Sjkim            }
401218585Sjkim
402218585Sjkim            if (ReferencedNode->Asl.CompileFlags & NODE_METHOD_TYPED)
403218585Sjkim            {
404218585Sjkim                ThisNodeBtype = ReferencedNode->Asl.AcpiBtype;
405218585Sjkim            }
406218585Sjkim            else
407218585Sjkim            {
408218585Sjkim                return (ACPI_UINT32_MAX -1);
409218585Sjkim            }
410218585Sjkim        }
411218585Sjkim    }
412218585Sjkim    else
413218585Sjkim    {
414218585Sjkim        ThisNodeBtype = Op->Asl.AcpiBtype;
415218585Sjkim    }
416218585Sjkim
417218585Sjkim    return (ThisNodeBtype);
418218585Sjkim}
419218585Sjkim
420218585Sjkim
421218585Sjkim/*******************************************************************************
422218585Sjkim *
423218585Sjkim * FUNCTION:    AnMapObjTypeToBtype
424218585Sjkim *
425218585Sjkim * PARAMETERS:  Op                  - A parse node
426218585Sjkim *
427218585Sjkim * RETURN:      A Btype
428218585Sjkim *
429218585Sjkim * DESCRIPTION: Map object to the associated "Btype"
430218585Sjkim *
431218585Sjkim ******************************************************************************/
432218585Sjkim
433218585SjkimUINT32
434218585SjkimAnMapObjTypeToBtype (
435218585Sjkim    ACPI_PARSE_OBJECT       *Op)
436218585Sjkim{
437218585Sjkim
438218585Sjkim    switch (Op->Asl.ParseOpcode)
439218585Sjkim    {
440218585Sjkim    case PARSEOP_OBJECTTYPE_BFF:        /* "BuffFieldObj" */
441218585Sjkim        return (ACPI_BTYPE_BUFFER_FIELD);
442218585Sjkim
443218585Sjkim    case PARSEOP_OBJECTTYPE_BUF:        /* "BuffObj" */
444218585Sjkim        return (ACPI_BTYPE_BUFFER);
445218585Sjkim
446218585Sjkim    case PARSEOP_OBJECTTYPE_DDB:        /* "DDBHandleObj" */
447218585Sjkim        return (ACPI_BTYPE_DDB_HANDLE);
448218585Sjkim
449218585Sjkim    case PARSEOP_OBJECTTYPE_DEV:        /* "DeviceObj" */
450218585Sjkim        return (ACPI_BTYPE_DEVICE);
451218585Sjkim
452218585Sjkim    case PARSEOP_OBJECTTYPE_EVT:        /* "EventObj" */
453218585Sjkim        return (ACPI_BTYPE_EVENT);
454218585Sjkim
455218585Sjkim    case PARSEOP_OBJECTTYPE_FLD:        /* "FieldUnitObj" */
456218585Sjkim        return (ACPI_BTYPE_FIELD_UNIT);
457218585Sjkim
458218585Sjkim    case PARSEOP_OBJECTTYPE_INT:        /* "IntObj" */
459218585Sjkim        return (ACPI_BTYPE_INTEGER);
460218585Sjkim
461218585Sjkim    case PARSEOP_OBJECTTYPE_MTH:        /* "MethodObj" */
462218585Sjkim        return (ACPI_BTYPE_METHOD);
463218585Sjkim
464218585Sjkim    case PARSEOP_OBJECTTYPE_MTX:        /* "MutexObj" */
465218585Sjkim        return (ACPI_BTYPE_MUTEX);
466218585Sjkim
467218585Sjkim    case PARSEOP_OBJECTTYPE_OPR:        /* "OpRegionObj" */
468218585Sjkim        return (ACPI_BTYPE_REGION);
469218585Sjkim
470218585Sjkim    case PARSEOP_OBJECTTYPE_PKG:        /* "PkgObj" */
471218585Sjkim        return (ACPI_BTYPE_PACKAGE);
472218585Sjkim
473218585Sjkim    case PARSEOP_OBJECTTYPE_POW:        /* "PowerResObj" */
474218585Sjkim        return (ACPI_BTYPE_POWER);
475218585Sjkim
476218585Sjkim    case PARSEOP_OBJECTTYPE_STR:        /* "StrObj" */
477218585Sjkim        return (ACPI_BTYPE_STRING);
478218585Sjkim
479218585Sjkim    case PARSEOP_OBJECTTYPE_THZ:        /* "ThermalZoneObj" */
480218585Sjkim        return (ACPI_BTYPE_THERMAL);
481218585Sjkim
482218585Sjkim    case PARSEOP_OBJECTTYPE_UNK:        /* "UnknownObj" */
483218585Sjkim        return (ACPI_BTYPE_OBJECTS_AND_REFS);
484218585Sjkim
485218585Sjkim    default:
486218585Sjkim        return (0);
487218585Sjkim    }
488218585Sjkim}
489218585Sjkim
490218585Sjkim
491218585Sjkim#ifdef ACPI_OBSOLETE_FUNCTIONS
492218585Sjkim/*******************************************************************************
493218585Sjkim *
494218585Sjkim * FUNCTION:    AnMapBtypeToEtype
495218585Sjkim *
496218585Sjkim * PARAMETERS:  Btype               - Bitfield of ACPI types
497218585Sjkim *
498218585Sjkim * RETURN:      The Etype corresponding the the Btype
499218585Sjkim *
500218585Sjkim * DESCRIPTION: Convert a bitfield type to an encoded type
501218585Sjkim *
502218585Sjkim ******************************************************************************/
503218585Sjkim
504218585SjkimUINT32
505218585SjkimAnMapBtypeToEtype (
506218585Sjkim    UINT32              Btype)
507218585Sjkim{
508218585Sjkim    UINT32              i;
509218585Sjkim    UINT32              Etype;
510218585Sjkim
511218585Sjkim
512218585Sjkim    if (Btype == 0)
513218585Sjkim    {
514218585Sjkim        return (0);
515218585Sjkim    }
516218585Sjkim
517218585Sjkim    Etype = 1;
518218585Sjkim    for (i = 1; i < Btype; i *= 2)
519218585Sjkim    {
520218585Sjkim        Etype++;
521218585Sjkim    }
522218585Sjkim
523218585Sjkim    return (Etype);
524218585Sjkim}
525218585Sjkim#endif
526