1 /******************************************************************************
3 * Module Name: exdump - Interpreter debug output routines
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2005, R. Byron Moore
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
45 #include <acpi/acpi.h>
46 #include <acpi/acinterp.h>
47 #include <acpi/amlcode.h>
48 #include <acpi/acnamesp.h>
49 #include <acpi/acparser.h>
51 #define _COMPONENT ACPI_EXECUTER
52 ACPI_MODULE_NAME ("exdump")
54 /* Local prototypes */
56 #ifdef ACPI_FUTURE_USAGE
75 acpi_physical_address value
);
76 #endif /* ACPI_FUTURE_USAGE */
80 * The following routines are used for debug output only
82 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
84 /*******************************************************************************
86 * FUNCTION: acpi_ex_dump_operand
88 * PARAMETERS: *obj_desc - Pointer to entry to be dumped
89 * Depth - Current nesting depth
93 * DESCRIPTION: Dump an operand object
95 ******************************************************************************/
98 acpi_ex_dump_operand (
99 union acpi_operand_object
*obj_desc
,
106 ACPI_FUNCTION_NAME ("ex_dump_operand")
109 if (!((ACPI_LV_EXEC
& acpi_dbg_level
) && (_COMPONENT
& acpi_dbg_layer
))) {
114 /* This could be a null element of a package */
116 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC
, "Null Object Descriptor\n"));
120 if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc
) == ACPI_DESC_TYPE_NAMED
) {
121 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC
, "%p is a NS Node: ", obj_desc
));
122 ACPI_DUMP_ENTRY (obj_desc
, ACPI_LV_EXEC
);
126 if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc
) != ACPI_DESC_TYPE_OPERAND
) {
127 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC
,
128 "%p is not a node or operand object: [%s]\n",
129 obj_desc
, acpi_ut_get_descriptor_name (obj_desc
)));
130 ACPI_DUMP_BUFFER (obj_desc
, sizeof (union acpi_operand_object
));
134 /* obj_desc is a valid object */
137 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC
, "%*s[%u] %p ",
138 depth
, " ", depth
, obj_desc
));
141 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC
, "%p ", obj_desc
));
144 /* Decode object type */
146 switch (ACPI_GET_OBJECT_TYPE (obj_desc
)) {
147 case ACPI_TYPE_LOCAL_REFERENCE
:
149 switch (obj_desc
->reference
.opcode
) {
152 acpi_os_printf ("Reference: Debug\n");
158 ACPI_DUMP_PATHNAME (obj_desc
->reference
.object
,
159 "Reference: Name: ", ACPI_LV_INFO
, _COMPONENT
);
160 ACPI_DUMP_ENTRY (obj_desc
->reference
.object
, ACPI_LV_INFO
);
166 acpi_os_printf ("Reference: Index %p\n",
167 obj_desc
->reference
.object
);
173 acpi_os_printf ("Reference: (ref_of) %p\n",
174 obj_desc
->reference
.object
);
180 acpi_os_printf ("Reference: Arg%d",
181 obj_desc
->reference
.offset
);
183 if (ACPI_GET_OBJECT_TYPE (obj_desc
) == ACPI_TYPE_INTEGER
) {
184 /* Value is an Integer */
186 acpi_os_printf (" value is [%8.8X%8.8x]",
187 ACPI_FORMAT_UINT64 (obj_desc
->integer
.value
));
190 acpi_os_printf ("\n");
196 acpi_os_printf ("Reference: Local%d",
197 obj_desc
->reference
.offset
);
199 if (ACPI_GET_OBJECT_TYPE (obj_desc
) == ACPI_TYPE_INTEGER
) {
201 /* Value is an Integer */
203 acpi_os_printf (" value is [%8.8X%8.8x]",
204 ACPI_FORMAT_UINT64 (obj_desc
->integer
.value
));
207 acpi_os_printf ("\n");
211 case AML_INT_NAMEPATH_OP
:
213 acpi_os_printf ("Reference.Node->Name %X\n",
214 obj_desc
->reference
.node
->name
.integer
);
222 acpi_os_printf ("Unknown Reference opcode=%X\n",
223 obj_desc
->reference
.opcode
);
230 case ACPI_TYPE_BUFFER
:
232 acpi_os_printf ("Buffer len %X @ %p \n",
233 obj_desc
->buffer
.length
, obj_desc
->buffer
.pointer
);
235 length
= obj_desc
->buffer
.length
;
240 /* Debug only -- dump the buffer contents */
242 if (obj_desc
->buffer
.pointer
) {
243 acpi_os_printf ("Buffer Contents: ");
245 for (index
= 0; index
< length
; index
++) {
246 acpi_os_printf (" %02x", obj_desc
->buffer
.pointer
[index
]);
248 acpi_os_printf ("\n");
253 case ACPI_TYPE_INTEGER
:
255 acpi_os_printf ("Integer %8.8X%8.8X\n",
256 ACPI_FORMAT_UINT64 (obj_desc
->integer
.value
));
260 case ACPI_TYPE_PACKAGE
:
262 acpi_os_printf ("Package [Len %X] element_array %p\n",
263 obj_desc
->package
.count
, obj_desc
->package
.elements
);
266 * If elements exist, package element pointer is valid,
267 * and debug_level exceeds 1, dump package's elements.
269 if (obj_desc
->package
.count
&&
270 obj_desc
->package
.elements
&&
271 acpi_dbg_level
> 1) {
272 for (index
= 0; index
< obj_desc
->package
.count
; index
++) {
273 acpi_ex_dump_operand (obj_desc
->package
.elements
[index
], depth
+1);
279 case ACPI_TYPE_REGION
:
281 acpi_os_printf ("Region %s (%X)",
282 acpi_ut_get_region_name (obj_desc
->region
.space_id
),
283 obj_desc
->region
.space_id
);
286 * If the address and length have not been evaluated,
289 if (!(obj_desc
->region
.flags
& AOPOBJ_DATA_VALID
)) {
290 acpi_os_printf ("\n");
293 acpi_os_printf (" base %8.8X%8.8X Length %X\n",
294 ACPI_FORMAT_UINT64 (obj_desc
->region
.address
),
295 obj_desc
->region
.length
);
300 case ACPI_TYPE_STRING
:
302 acpi_os_printf ("String length %X @ %p ",
303 obj_desc
->string
.length
,
304 obj_desc
->string
.pointer
);
306 acpi_ut_print_string (obj_desc
->string
.pointer
, ACPI_UINT8_MAX
);
307 acpi_os_printf ("\n");
311 case ACPI_TYPE_LOCAL_BANK_FIELD
:
313 acpi_os_printf ("bank_field\n");
317 case ACPI_TYPE_LOCAL_REGION_FIELD
:
320 "region_field: Bits=%X acc_width=%X Lock=%X Update=%X at byte=%X bit=%X of below:\n",
321 obj_desc
->field
.bit_length
,
322 obj_desc
->field
.access_byte_width
,
323 obj_desc
->field
.field_flags
& AML_FIELD_LOCK_RULE_MASK
,
324 obj_desc
->field
.field_flags
& AML_FIELD_UPDATE_RULE_MASK
,
325 obj_desc
->field
.base_byte_offset
,
326 obj_desc
->field
.start_field_bit_offset
);
328 acpi_ex_dump_operand (obj_desc
->field
.region_obj
, depth
+1);
332 case ACPI_TYPE_LOCAL_INDEX_FIELD
:
334 acpi_os_printf ("index_field\n");
338 case ACPI_TYPE_BUFFER_FIELD
:
341 "buffer_field: %X bits at byte %X bit %X of \n",
342 obj_desc
->buffer_field
.bit_length
,
343 obj_desc
->buffer_field
.base_byte_offset
,
344 obj_desc
->buffer_field
.start_field_bit_offset
);
346 if (!obj_desc
->buffer_field
.buffer_obj
) {
347 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC
, "*NULL* \n"));
349 else if (ACPI_GET_OBJECT_TYPE (obj_desc
->buffer_field
.buffer_obj
) !=
351 acpi_os_printf ("*not a Buffer* \n");
354 acpi_ex_dump_operand (obj_desc
->buffer_field
.buffer_obj
, depth
+1);
359 case ACPI_TYPE_EVENT
:
361 acpi_os_printf ("Event\n");
365 case ACPI_TYPE_METHOD
:
367 acpi_os_printf ("Method(%X) @ %p:%X\n",
368 obj_desc
->method
.param_count
,
369 obj_desc
->method
.aml_start
,
370 obj_desc
->method
.aml_length
);
374 case ACPI_TYPE_MUTEX
:
376 acpi_os_printf ("Mutex\n");
380 case ACPI_TYPE_DEVICE
:
382 acpi_os_printf ("Device\n");
386 case ACPI_TYPE_POWER
:
388 acpi_os_printf ("Power\n");
392 case ACPI_TYPE_PROCESSOR
:
394 acpi_os_printf ("Processor\n");
398 case ACPI_TYPE_THERMAL
:
400 acpi_os_printf ("Thermal\n");
407 acpi_os_printf ("Unknown Type %X\n", ACPI_GET_OBJECT_TYPE (obj_desc
));
415 /*******************************************************************************
417 * FUNCTION: acpi_ex_dump_operands
419 * PARAMETERS: Operands - Operand list
420 * interpreter_mode - Load or Exec
421 * Ident - Identification
422 * num_levels - # of stack entries to dump above line
423 * Note - Output notation
424 * module_name - Caller's module name
425 * line_number - Caller's invocation line number
427 * DESCRIPTION: Dump the object stack
429 ******************************************************************************/
432 acpi_ex_dump_operands (
433 union acpi_operand_object
**operands
,
434 acpi_interpreter_mode interpreter_mode
,
444 ACPI_FUNCTION_NAME ("ex_dump_operands");
455 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC
,
456 "************* Operand Stack Contents (Opcode [%s], %d Operands)\n",
459 if (num_levels
== 0) {
463 /* Dump the operand stack starting at the top */
465 for (i
= 0; num_levels
> 0; i
--, num_levels
--) {
466 acpi_ex_dump_operand (operands
[i
], 0);
469 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC
,
470 "************* Stack dump from %s(%d), %s\n",
471 module_name
, line_number
, note
));
476 #ifdef ACPI_FUTURE_USAGE
477 /*******************************************************************************
479 * FUNCTION: acpi_ex_out* functions
481 * PARAMETERS: Title - Descriptive text
482 * Value - Value to be displayed
484 * DESCRIPTION: Object dump output formatting functions. These functions
485 * reduce the number of format strings required and keeps them
486 * all in one place for easy modification.
488 ******************************************************************************/
495 acpi_os_printf ("%20s : %s\n", title
, value
);
499 acpi_ex_out_pointer (
503 acpi_os_printf ("%20s : %p\n", title
, value
);
507 acpi_ex_out_integer (
511 acpi_os_printf ("%20s : %X\n", title
, value
);
515 acpi_ex_out_address (
517 acpi_physical_address value
)
520 #if ACPI_MACHINE_WIDTH == 16
521 acpi_os_printf ("%20s : %p\n", title
, value
);
523 acpi_os_printf ("%20s : %8.8X%8.8X\n", title
, ACPI_FORMAT_UINT64 (value
));
528 /*******************************************************************************
530 * FUNCTION: acpi_ex_dump_node
532 * PARAMETERS: *Node - Descriptor to dump
533 * Flags - Force display if TRUE
535 * DESCRIPTION: Dumps the members of the given.Node
537 ******************************************************************************/
541 struct acpi_namespace_node
*node
,
545 ACPI_FUNCTION_ENTRY ();
549 if (!((ACPI_LV_OBJECTS
& acpi_dbg_level
) && (_COMPONENT
& acpi_dbg_layer
))) {
554 acpi_os_printf ("%20s : %4.4s\n", "Name", acpi_ut_get_node_name (node
));
555 acpi_ex_out_string ("Type", acpi_ut_get_type_name (node
->type
));
556 acpi_ex_out_integer ("Flags", node
->flags
);
557 acpi_ex_out_integer ("Owner Id", node
->owner_id
);
558 acpi_ex_out_integer ("Reference Count", node
->reference_count
);
559 acpi_ex_out_pointer ("Attached Object", acpi_ns_get_attached_object (node
));
560 acpi_ex_out_pointer ("child_list", node
->child
);
561 acpi_ex_out_pointer ("next_peer", node
->peer
);
562 acpi_ex_out_pointer ("Parent", acpi_ns_get_parent_node (node
));
566 /*******************************************************************************
568 * FUNCTION: acpi_ex_dump_object_descriptor
570 * PARAMETERS: *Object - Descriptor to dump
571 * Flags - Force display if TRUE
573 * DESCRIPTION: Dumps the members of the object descriptor given.
575 ******************************************************************************/
578 acpi_ex_dump_object_descriptor (
579 union acpi_operand_object
*obj_desc
,
585 ACPI_FUNCTION_TRACE ("ex_dump_object_descriptor");
593 if (!((ACPI_LV_OBJECTS
& acpi_dbg_level
) && (_COMPONENT
& acpi_dbg_layer
))) {
598 if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc
) == ACPI_DESC_TYPE_NAMED
) {
599 acpi_ex_dump_node ((struct acpi_namespace_node
*) obj_desc
, flags
);
600 acpi_os_printf ("\nAttached Object (%p):\n",
601 ((struct acpi_namespace_node
*) obj_desc
)->object
);
602 acpi_ex_dump_object_descriptor (
603 ((struct acpi_namespace_node
*) obj_desc
)->object
, flags
);
607 if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc
) != ACPI_DESC_TYPE_OPERAND
) {
609 "ex_dump_object_descriptor: %p is not an ACPI operand object: [%s]\n",
610 obj_desc
, acpi_ut_get_descriptor_name (obj_desc
));
616 acpi_ex_out_string ("Type", acpi_ut_get_object_type_name (obj_desc
));
617 acpi_ex_out_integer ("Reference Count", obj_desc
->common
.reference_count
);
618 acpi_ex_out_integer ("Flags", obj_desc
->common
.flags
);
620 /* Object-specific Fields */
622 switch (ACPI_GET_OBJECT_TYPE (obj_desc
)) {
623 case ACPI_TYPE_INTEGER
:
625 acpi_os_printf ("%20s : %8.8X%8.8X\n", "Value",
626 ACPI_FORMAT_UINT64 (obj_desc
->integer
.value
));
630 case ACPI_TYPE_STRING
:
632 acpi_ex_out_integer ("Length", obj_desc
->string
.length
);
634 acpi_os_printf ("%20s : %p ", "Pointer", obj_desc
->string
.pointer
);
635 acpi_ut_print_string (obj_desc
->string
.pointer
, ACPI_UINT8_MAX
);
636 acpi_os_printf ("\n");
640 case ACPI_TYPE_BUFFER
:
642 acpi_ex_out_integer ("Length", obj_desc
->buffer
.length
);
643 acpi_ex_out_pointer ("Pointer", obj_desc
->buffer
.pointer
);
644 ACPI_DUMP_BUFFER (obj_desc
->buffer
.pointer
, obj_desc
->buffer
.length
);
648 case ACPI_TYPE_PACKAGE
:
650 acpi_ex_out_integer ("Flags", obj_desc
->package
.flags
);
651 acpi_ex_out_integer ("Count", obj_desc
->package
.count
);
652 acpi_ex_out_pointer ("Elements", obj_desc
->package
.elements
);
654 /* Dump the package contents */
656 if (obj_desc
->package
.count
> 0) {
657 acpi_os_printf ("\nPackage Contents:\n");
658 for (i
= 0; i
< obj_desc
->package
.count
; i
++) {
659 acpi_os_printf ("[%.3d] %p", i
, obj_desc
->package
.elements
[i
]);
660 if (obj_desc
->package
.elements
[i
]) {
661 acpi_os_printf (" %s",
662 acpi_ut_get_object_type_name (obj_desc
->package
.elements
[i
]));
664 acpi_os_printf ("\n");
670 case ACPI_TYPE_DEVICE
:
672 acpi_ex_out_pointer ("Handler", obj_desc
->device
.handler
);
673 acpi_ex_out_pointer ("system_notify", obj_desc
->device
.system_notify
);
674 acpi_ex_out_pointer ("device_notify", obj_desc
->device
.device_notify
);
678 case ACPI_TYPE_EVENT
:
680 acpi_ex_out_pointer ("Semaphore", obj_desc
->event
.semaphore
);
684 case ACPI_TYPE_METHOD
:
686 acpi_ex_out_integer ("param_count", obj_desc
->method
.param_count
);
687 acpi_ex_out_integer ("Concurrency", obj_desc
->method
.concurrency
);
688 acpi_ex_out_pointer ("Semaphore", obj_desc
->method
.semaphore
);
689 acpi_ex_out_integer ("owning_id", obj_desc
->method
.owning_id
);
690 acpi_ex_out_integer ("aml_length", obj_desc
->method
.aml_length
);
691 acpi_ex_out_pointer ("aml_start", obj_desc
->method
.aml_start
);
695 case ACPI_TYPE_MUTEX
:
697 acpi_ex_out_integer ("sync_level", obj_desc
->mutex
.sync_level
);
698 acpi_ex_out_pointer ("owner_thread", obj_desc
->mutex
.owner_thread
);
699 acpi_ex_out_integer ("acquire_depth", obj_desc
->mutex
.acquisition_depth
);
700 acpi_ex_out_pointer ("Semaphore", obj_desc
->mutex
.semaphore
);
704 case ACPI_TYPE_REGION
:
706 acpi_ex_out_integer ("space_id", obj_desc
->region
.space_id
);
707 acpi_ex_out_integer ("Flags", obj_desc
->region
.flags
);
708 acpi_ex_out_address ("Address", obj_desc
->region
.address
);
709 acpi_ex_out_integer ("Length", obj_desc
->region
.length
);
710 acpi_ex_out_pointer ("Handler", obj_desc
->region
.handler
);
711 acpi_ex_out_pointer ("Next", obj_desc
->region
.next
);
715 case ACPI_TYPE_POWER
:
717 acpi_ex_out_integer ("system_level", obj_desc
->power_resource
.system_level
);
718 acpi_ex_out_integer ("resource_order", obj_desc
->power_resource
.resource_order
);
719 acpi_ex_out_pointer ("system_notify", obj_desc
->power_resource
.system_notify
);
720 acpi_ex_out_pointer ("device_notify", obj_desc
->power_resource
.device_notify
);
724 case ACPI_TYPE_PROCESSOR
:
726 acpi_ex_out_integer ("Processor ID", obj_desc
->processor
.proc_id
);
727 acpi_ex_out_integer ("Length", obj_desc
->processor
.length
);
728 acpi_ex_out_address ("Address", (acpi_physical_address
) obj_desc
->processor
.address
);
729 acpi_ex_out_pointer ("system_notify", obj_desc
->processor
.system_notify
);
730 acpi_ex_out_pointer ("device_notify", obj_desc
->processor
.device_notify
);
731 acpi_ex_out_pointer ("Handler", obj_desc
->processor
.handler
);
735 case ACPI_TYPE_THERMAL
:
737 acpi_ex_out_pointer ("system_notify", obj_desc
->thermal_zone
.system_notify
);
738 acpi_ex_out_pointer ("device_notify", obj_desc
->thermal_zone
.device_notify
);
739 acpi_ex_out_pointer ("Handler", obj_desc
->thermal_zone
.handler
);
743 case ACPI_TYPE_BUFFER_FIELD
:
744 case ACPI_TYPE_LOCAL_REGION_FIELD
:
745 case ACPI_TYPE_LOCAL_BANK_FIELD
:
746 case ACPI_TYPE_LOCAL_INDEX_FIELD
:
748 acpi_ex_out_integer ("field_flags", obj_desc
->common_field
.field_flags
);
749 acpi_ex_out_integer ("access_byte_width",obj_desc
->common_field
.access_byte_width
);
750 acpi_ex_out_integer ("bit_length", obj_desc
->common_field
.bit_length
);
751 acpi_ex_out_integer ("fld_bit_offset", obj_desc
->common_field
.start_field_bit_offset
);
752 acpi_ex_out_integer ("base_byte_offset", obj_desc
->common_field
.base_byte_offset
);
753 acpi_ex_out_pointer ("parent_node", obj_desc
->common_field
.node
);
755 switch (ACPI_GET_OBJECT_TYPE (obj_desc
)) {
756 case ACPI_TYPE_BUFFER_FIELD
:
757 acpi_ex_out_pointer ("buffer_obj", obj_desc
->buffer_field
.buffer_obj
);
760 case ACPI_TYPE_LOCAL_REGION_FIELD
:
761 acpi_ex_out_pointer ("region_obj", obj_desc
->field
.region_obj
);
764 case ACPI_TYPE_LOCAL_BANK_FIELD
:
765 acpi_ex_out_integer ("Value", obj_desc
->bank_field
.value
);
766 acpi_ex_out_pointer ("region_obj", obj_desc
->bank_field
.region_obj
);
767 acpi_ex_out_pointer ("bank_obj", obj_desc
->bank_field
.bank_obj
);
770 case ACPI_TYPE_LOCAL_INDEX_FIELD
:
771 acpi_ex_out_integer ("Value", obj_desc
->index_field
.value
);
772 acpi_ex_out_pointer ("Index", obj_desc
->index_field
.index_obj
);
773 acpi_ex_out_pointer ("Data", obj_desc
->index_field
.data_obj
);
777 /* All object types covered above */
783 case ACPI_TYPE_LOCAL_REFERENCE
:
785 acpi_ex_out_integer ("target_type", obj_desc
->reference
.target_type
);
786 acpi_ex_out_string ("Opcode", (acpi_ps_get_opcode_info (
787 obj_desc
->reference
.opcode
))->name
);
788 acpi_ex_out_integer ("Offset", obj_desc
->reference
.offset
);
789 acpi_ex_out_pointer ("obj_desc", obj_desc
->reference
.object
);
790 acpi_ex_out_pointer ("Node", obj_desc
->reference
.node
);
791 acpi_ex_out_pointer ("Where", obj_desc
->reference
.where
);
793 if (obj_desc
->reference
.object
) {
794 acpi_os_printf ("\nReferenced Object:\n");
795 acpi_ex_dump_object_descriptor (obj_desc
->reference
.object
, flags
);
800 case ACPI_TYPE_LOCAL_ADDRESS_HANDLER
:
802 acpi_ex_out_integer ("space_id", obj_desc
->address_space
.space_id
);
803 acpi_ex_out_pointer ("Next", obj_desc
->address_space
.next
);
804 acpi_ex_out_pointer ("region_list", obj_desc
->address_space
.region_list
);
805 acpi_ex_out_pointer ("Node", obj_desc
->address_space
.node
);
806 acpi_ex_out_pointer ("Context", obj_desc
->address_space
.context
);
810 case ACPI_TYPE_LOCAL_NOTIFY
:
812 acpi_ex_out_pointer ("Node", obj_desc
->notify
.node
);
813 acpi_ex_out_pointer ("Context", obj_desc
->notify
.context
);
817 case ACPI_TYPE_LOCAL_ALIAS
:
818 case ACPI_TYPE_LOCAL_METHOD_ALIAS
:
819 case ACPI_TYPE_LOCAL_EXTRA
:
820 case ACPI_TYPE_LOCAL_DATA
:
824 "ex_dump_object_descriptor: Display not implemented for object type %s\n",
825 acpi_ut_get_object_type_name (obj_desc
));
832 #endif /* ACPI_FUTURE_USAGE */