ACPICA: iasl: add ASL conversion tool
[linux-2.6-microblaze.git] / drivers / acpi / acpica / psloop.c
index b7da881..b422400 100644 (file)
@@ -55,6 +55,7 @@
 #include "acparser.h"
 #include "acdispat.h"
 #include "amlcode.h"
+#include "acconvert.h"
 
 #define _COMPONENT          ACPI_PARSER
 ACPI_MODULE_NAME("psloop")
@@ -132,6 +133,21 @@ acpi_ps_get_arguments(struct acpi_walk_state *walk_state,
                       !walk_state->arg_count) {
                        walk_state->aml = walk_state->parser_state.aml;
 
+                       switch (op->common.aml_opcode) {
+                       case AML_METHOD_OP:
+                       case AML_BUFFER_OP:
+                       case AML_PACKAGE_OP:
+                       case AML_VARIABLE_PACKAGE_OP:
+                       case AML_WHILE_OP:
+
+                               break;
+
+                       default:
+
+                               ASL_CV_CAPTURE_COMMENTS(walk_state);
+                               break;
+                       }
+
                        status =
                            acpi_ps_get_next_arg(walk_state,
                                                 &(walk_state->parser_state),
@@ -480,6 +496,8 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)
        /* Iterative parsing loop, while there is more AML to process: */
 
        while ((parser_state->aml < parser_state->aml_end) || (op)) {
+               ASL_CV_CAPTURE_COMMENTS(walk_state);
+
                aml_op_start = parser_state->aml;
                if (!op) {
                        status =
@@ -516,6 +534,20 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)
                 */
                walk_state->arg_count = 0;
 
+               switch (op->common.aml_opcode) {
+               case AML_BYTE_OP:
+               case AML_WORD_OP:
+               case AML_DWORD_OP:
+               case AML_QWORD_OP:
+
+                       break;
+
+               default:
+
+                       ASL_CV_CAPTURE_COMMENTS(walk_state);
+                       break;
+               }
+
                /* Are there any arguments that must be processed? */
 
                if (walk_state->arg_types) {