diff options
-rw-r--r-- | drivers/acpi/acpica/acconvert.h | 144 | ||||
-rw-r--r-- | drivers/acpi/acpica/acglobal.h | 53 | ||||
-rw-r--r-- | drivers/acpi/acpica/aclocal.h | 99 | ||||
-rw-r--r-- | drivers/acpi/acpica/acmacros.h | 35 | ||||
-rw-r--r-- | drivers/acpi/acpica/acopcode.h | 2 | ||||
-rw-r--r-- | drivers/acpi/acpica/amlcode.h | 4 | ||||
-rw-r--r-- | drivers/acpi/acpica/psargs.c | 23 | ||||
-rw-r--r-- | drivers/acpi/acpica/psloop.c | 32 | ||||
-rw-r--r-- | drivers/acpi/acpica/psobject.c | 38 | ||||
-rw-r--r-- | drivers/acpi/acpica/psopcode.c | 5 | ||||
-rw-r--r-- | drivers/acpi/acpica/psopinfo.c | 2 | ||||
-rw-r--r-- | drivers/acpi/acpica/pstree.c | 7 | ||||
-rw-r--r-- | drivers/acpi/acpica/psutils.c | 11 | ||||
-rw-r--r-- | drivers/acpi/acpica/utalloc.c | 50 | ||||
-rw-r--r-- | drivers/acpi/acpica/utdebug.c | 1 | ||||
-rw-r--r-- | include/acpi/acconfig.h | 1 | ||||
-rw-r--r-- | include/acpi/actbl2.h | 1 |
17 files changed, 490 insertions, 18 deletions
diff --git a/drivers/acpi/acpica/acconvert.h b/drivers/acpi/acpica/acconvert.h new file mode 100644 index 000000000000..c84223b60b35 --- /dev/null +++ b/drivers/acpi/acpica/acconvert.h | |||
@@ -0,0 +1,144 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Module Name: acapps - common include for ACPI applications/tools | ||
4 | * | ||
5 | *****************************************************************************/ | ||
6 | |||
7 | /* | ||
8 | * Copyright (C) 2000 - 2017, Intel Corp. | ||
9 | * All rights reserved. | ||
10 | * | ||
11 | * Redistribution and use in source and binary forms, with or without | ||
12 | * modification, are permitted provided that the following conditions | ||
13 | * are met: | ||
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. | ||
25 | * | ||
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. | ||
29 | * | ||
30 | * NO WARRANTY | ||
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. | ||
42 | */ | ||
43 | |||
44 | #ifndef _ACCONVERT | ||
45 | #define _ACCONVERT | ||
46 | |||
47 | /* Definitions for comment state */ | ||
48 | |||
49 | #define ASL_COMMENT_STANDARD 1 | ||
50 | #define ASLCOMMENT_INLINE 2 | ||
51 | #define ASL_COMMENT_OPEN_PAREN 3 | ||
52 | #define ASL_COMMENT_CLOSE_PAREN 4 | ||
53 | #define ASL_COMMENT_CLOSE_BRACE 5 | ||
54 | |||
55 | /* Definitions for comment print function*/ | ||
56 | |||
57 | #define AML_COMMENT_STANDARD 1 | ||
58 | #define AMLCOMMENT_INLINE 2 | ||
59 | #define AML_COMMENT_END_NODE 3 | ||
60 | #define AML_NAMECOMMENT 4 | ||
61 | #define AML_COMMENT_CLOSE_BRACE 5 | ||
62 | #define AML_COMMENT_ENDBLK 6 | ||
63 | #define AML_COMMENT_INCLUDE 7 | ||
64 | |||
65 | #ifdef ACPI_ASL_COMPILER | ||
66 | /* | ||
67 | * cvcompiler | ||
68 | */ | ||
69 | void | ||
70 | cv_process_comment(struct asl_comment_state current_state, | ||
71 | char *string_buffer, int c1); | ||
72 | |||
73 | void | ||
74 | cv_process_comment_type2(struct asl_comment_state current_state, | ||
75 | char *string_buffer); | ||
76 | |||
77 | u32 cv_calculate_comment_lengths(union acpi_parse_object *op); | ||
78 | |||
79 | void cv_process_comment_state(char input); | ||
80 | |||
81 | char *cv_append_inline_comment(char *inline_comment, char *to_add); | ||
82 | |||
83 | void cv_add_to_comment_list(char *to_add); | ||
84 | |||
85 | void cv_place_comment(u8 type, char *comment_string); | ||
86 | |||
87 | u32 cv_parse_op_block_type(union acpi_parse_object *op); | ||
88 | |||
89 | struct acpi_comment_node *cv_comment_node_calloc(void); | ||
90 | |||
91 | void cg_write_aml_def_block_comment(union acpi_parse_object *op); | ||
92 | |||
93 | void | ||
94 | cg_write_one_aml_comment(union acpi_parse_object *op, | ||
95 | char *comment_to_print, u8 input_option); | ||
96 | |||
97 | void cg_write_aml_comment(union acpi_parse_object *op); | ||
98 | |||
99 | /* | ||
100 | * cvparser | ||
101 | */ | ||
102 | void | ||
103 | cv_init_file_tree(struct acpi_table_header *table, | ||
104 | u8 *aml_start, u32 aml_length); | ||
105 | |||
106 | void cv_clear_op_comments(union acpi_parse_object *op); | ||
107 | |||
108 | struct acpi_file_node *cv_filename_exists(char *filename, | ||
109 | struct acpi_file_node *head); | ||
110 | |||
111 | void cv_label_file_node(union acpi_parse_object *op); | ||
112 | |||
113 | void | ||
114 | cv_capture_list_comments(struct acpi_parse_state *parser_state, | ||
115 | struct acpi_comment_node *list_head, | ||
116 | struct acpi_comment_node *list_tail); | ||
117 | |||
118 | void cv_capture_comments_only(struct acpi_parse_state *parser_state); | ||
119 | |||
120 | void cv_capture_comments(struct acpi_walk_state *walk_state); | ||
121 | |||
122 | void cv_transfer_comments(union acpi_parse_object *op); | ||
123 | |||
124 | /* | ||
125 | * cvdisasm | ||
126 | */ | ||
127 | void cv_switch_files(u32 level, union acpi_parse_object *op); | ||
128 | |||
129 | u8 cv_file_has_switched(union acpi_parse_object *op); | ||
130 | |||
131 | void cv_close_paren_write_comment(union acpi_parse_object *op, u32 level); | ||
132 | |||
133 | void cv_close_brace_write_comment(union acpi_parse_object *op, u32 level); | ||
134 | |||
135 | void | ||
136 | cv_print_one_comment_list(struct acpi_comment_node *comment_list, u32 level); | ||
137 | |||
138 | void | ||
139 | cv_print_one_comment_type(union acpi_parse_object *op, | ||
140 | u8 comment_type, char *end_str, u32 level); | ||
141 | |||
142 | #endif | ||
143 | |||
144 | #endif /* _ACCONVERT */ | ||
diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h index 1d955fe216c4..abe8c316908c 100644 --- a/drivers/acpi/acpica/acglobal.h +++ b/drivers/acpi/acpica/acglobal.h | |||
@@ -370,6 +370,59 @@ ACPI_GLOBAL(const char, *acpi_gbl_pld_shape_list[]); | |||
370 | 370 | ||
371 | #endif | 371 | #endif |
372 | 372 | ||
373 | /* | ||
374 | * Meant for the -ca option. | ||
375 | */ | ||
376 | ACPI_INIT_GLOBAL(char *, acpi_gbl_current_inline_comment, NULL); | ||
377 | ACPI_INIT_GLOBAL(char *, acpi_gbl_current_end_node_comment, NULL); | ||
378 | ACPI_INIT_GLOBAL(char *, acpi_gbl_current_open_brace_comment, NULL); | ||
379 | ACPI_INIT_GLOBAL(char *, acpi_gbl_current_close_brace_comment, NULL); | ||
380 | |||
381 | ACPI_INIT_GLOBAL(char *, acpi_gbl_root_filename, NULL); | ||
382 | ACPI_INIT_GLOBAL(char *, acpi_gbl_current_filename, NULL); | ||
383 | ACPI_INIT_GLOBAL(char *, acpi_gbl_current_parent_filename, NULL); | ||
384 | ACPI_INIT_GLOBAL(char *, acpi_gbl_current_include_filename, NULL); | ||
385 | |||
386 | ACPI_INIT_GLOBAL(struct acpi_comment_node, *acpi_gbl_last_list_head, NULL); | ||
387 | |||
388 | ACPI_INIT_GLOBAL(struct acpi_comment_node, *acpi_gbl_def_blk_comment_list_head, | ||
389 | NULL); | ||
390 | ACPI_INIT_GLOBAL(struct acpi_comment_node, *acpi_gbl_def_blk_comment_list_tail, | ||
391 | NULL); | ||
392 | |||
393 | ACPI_INIT_GLOBAL(struct acpi_comment_node, *acpi_gbl_reg_comment_list_head, | ||
394 | NULL); | ||
395 | ACPI_INIT_GLOBAL(struct acpi_comment_node, *acpi_gbl_reg_comment_list_tail, | ||
396 | NULL); | ||
397 | |||
398 | ACPI_INIT_GLOBAL(struct acpi_comment_node, *acpi_gbl_inc_comment_list_head, | ||
399 | NULL); | ||
400 | ACPI_INIT_GLOBAL(struct acpi_comment_node, *acpi_gbl_inc_comment_list_tail, | ||
401 | NULL); | ||
402 | |||
403 | ACPI_INIT_GLOBAL(struct acpi_comment_node, *acpi_gbl_end_blk_comment_list_head, | ||
404 | NULL); | ||
405 | ACPI_INIT_GLOBAL(struct acpi_comment_node, *acpi_gbl_end_blk_comment_list_tail, | ||
406 | NULL); | ||
407 | |||
408 | ACPI_INIT_GLOBAL(struct acpi_comment_addr_node, | ||
409 | *acpi_gbl_comment_addr_list_head, NULL); | ||
410 | |||
411 | ACPI_INIT_GLOBAL(union acpi_parse_object, *acpi_gbl_current_scope, NULL); | ||
412 | |||
413 | ACPI_INIT_GLOBAL(struct acpi_file_node, *acpi_gbl_file_tree_root, NULL); | ||
414 | |||
415 | ACPI_GLOBAL(acpi_cache_t *, acpi_gbl_reg_comment_cache); | ||
416 | ACPI_GLOBAL(acpi_cache_t *, acpi_gbl_comment_addr_cache); | ||
417 | ACPI_GLOBAL(acpi_cache_t *, acpi_gbl_file_cache); | ||
418 | |||
419 | ACPI_INIT_GLOBAL(u8, gbl_capture_comments, FALSE); | ||
420 | |||
421 | ACPI_INIT_GLOBAL(u8, acpi_gbl_debug_asl_conversion, FALSE); | ||
422 | ACPI_INIT_GLOBAL(ACPI_FILE, acpi_gbl_conv_debug_file, NULL); | ||
423 | |||
424 | ACPI_GLOBAL(char, acpi_gbl_table_sig[4]); | ||
425 | |||
373 | /***************************************************************************** | 426 | /***************************************************************************** |
374 | * | 427 | * |
375 | * Application globals | 428 | * Application globals |
diff --git a/drivers/acpi/acpica/aclocal.h b/drivers/acpi/acpica/aclocal.h index ca984261acbb..f9b3f7fef462 100644 --- a/drivers/acpi/acpica/aclocal.h +++ b/drivers/acpi/acpica/aclocal.h | |||
@@ -53,7 +53,7 @@ typedef u32 acpi_mutex_handle; | |||
53 | 53 | ||
54 | /* Total number of aml opcodes defined */ | 54 | /* Total number of aml opcodes defined */ |
55 | 55 | ||
56 | #define AML_NUM_OPCODES 0x82 | 56 | #define AML_NUM_OPCODES 0x83 |
57 | 57 | ||
58 | /* Forward declarations */ | 58 | /* Forward declarations */ |
59 | 59 | ||
@@ -754,21 +754,52 @@ union acpi_parse_value { | |||
754 | #define ACPI_DISASM_ONLY_MEMBERS(a) | 754 | #define ACPI_DISASM_ONLY_MEMBERS(a) |
755 | #endif | 755 | #endif |
756 | 756 | ||
757 | #if defined(ACPI_ASL_COMPILER) | ||
758 | #define ACPI_CONVERTER_ONLY_MEMBERS(a) a; | ||
759 | #else | ||
760 | #define ACPI_CONVERTER_ONLY_MEMBERS(a) | ||
761 | #endif | ||
762 | |||
757 | #define ACPI_PARSE_COMMON \ | 763 | #define ACPI_PARSE_COMMON \ |
758 | union acpi_parse_object *parent; /* Parent op */\ | 764 | union acpi_parse_object *parent; /* Parent op */\ |
759 | u8 descriptor_type; /* To differentiate various internal objs */\ | 765 | u8 descriptor_type; /* To differentiate various internal objs */\ |
760 | u8 flags; /* Type of Op */\ | 766 | u8 flags; /* Type of Op */\ |
761 | u16 aml_opcode; /* AML opcode */\ | 767 | u16 aml_opcode; /* AML opcode */\ |
762 | u8 *aml; /* Address of declaration in AML */\ | 768 | u8 *aml; /* Address of declaration in AML */\ |
763 | union acpi_parse_object *next; /* Next op */\ | 769 | union acpi_parse_object *next; /* Next op */\ |
764 | struct acpi_namespace_node *node; /* For use by interpreter */\ | 770 | struct acpi_namespace_node *node; /* For use by interpreter */\ |
765 | union acpi_parse_value value; /* Value or args associated with the opcode */\ | 771 | union acpi_parse_value value; /* Value or args associated with the opcode */\ |
766 | u8 arg_list_length; /* Number of elements in the arg list */\ | 772 | u8 arg_list_length; /* Number of elements in the arg list */\ |
767 | ACPI_DISASM_ONLY_MEMBERS (\ | 773 | ACPI_DISASM_ONLY_MEMBERS (\ |
768 | u16 disasm_flags; /* Used during AML disassembly */\ | 774 | u16 disasm_flags; /* Used during AML disassembly */\ |
769 | u8 disasm_opcode; /* Subtype used for disassembly */\ | 775 | u8 disasm_opcode; /* Subtype used for disassembly */\ |
770 | char *operator_symbol;/* Used for C-style operator name strings */\ | 776 | char *operator_symbol; /* Used for C-style operator name strings */\ |
771 | char aml_op_name[16]) /* Op name (debug only) */ | 777 | char aml_op_name[16]) /* Op name (debug only) */\ |
778 | ACPI_CONVERTER_ONLY_MEMBERS (\ | ||
779 | char *inline_comment; /* Inline comment */\ | ||
780 | char *end_node_comment; /* End of node comment */\ | ||
781 | char *name_comment; /* Comment associated with the first parameter of the name node */\ | ||
782 | char *close_brace_comment; /* Comments that come after } on the same as } */\ | ||
783 | struct acpi_comment_node *comment_list; /* comments that appears before this node */\ | ||
784 | struct acpi_comment_node *end_blk_comment; /* comments that at the end of a block but before ) or } */\ | ||
785 | char *cv_filename; /* Filename associated with this node. Used for ASL/ASL+ converter */\ | ||
786 | char *cv_parent_filename) /* Parent filename associated with this node. Used for ASL/ASL+ converter */ | ||
787 | |||
788 | /* categories of comments */ | ||
789 | |||
790 | typedef enum { | ||
791 | STANDARD_COMMENT = 1, | ||
792 | INLINE_COMMENT, | ||
793 | ENDNODE_COMMENT, | ||
794 | OPENBRACE_COMMENT, | ||
795 | CLOSE_BRACE_COMMENT, | ||
796 | STD_DEFBLK_COMMENT, | ||
797 | END_DEFBLK_COMMENT, | ||
798 | FILENAME_COMMENT, | ||
799 | PARENTFILENAME_COMMENT, | ||
800 | ENDBLK_COMMENT, | ||
801 | INCLUDE_COMMENT | ||
802 | } asl_comment_types; | ||
772 | 803 | ||
773 | /* Internal opcodes for disasm_opcode field above */ | 804 | /* Internal opcodes for disasm_opcode field above */ |
774 | 805 | ||
@@ -790,6 +821,34 @@ union acpi_parse_value { | |||
790 | #define ACPI_DASM_DEFAULT 0x0F /* Else is a Default in a Switch/Case block */ | 821 | #define ACPI_DASM_DEFAULT 0x0F /* Else is a Default in a Switch/Case block */ |
791 | 822 | ||
792 | /* | 823 | /* |
824 | * List struct used in the -ca option | ||
825 | */ | ||
826 | struct acpi_comment_node { | ||
827 | char *comment; | ||
828 | struct acpi_comment_node *next; | ||
829 | }; | ||
830 | |||
831 | struct acpi_comment_addr_node { | ||
832 | u8 *addr; | ||
833 | struct acpi_comment_addr_node *next; | ||
834 | }; | ||
835 | |||
836 | /* | ||
837 | * File node - used for "Include" operator file stack and | ||
838 | * depdendency tree for the -ca option | ||
839 | */ | ||
840 | struct acpi_file_node { | ||
841 | void *file; | ||
842 | char *filename; | ||
843 | char *file_start; /* Points to AML and indicates when the AML for this particular file starts. */ | ||
844 | char *file_end; /* Points to AML and indicates when the AML for this particular file ends. */ | ||
845 | struct acpi_file_node *next; | ||
846 | struct acpi_file_node *parent; | ||
847 | u8 include_written; | ||
848 | struct acpi_comment_node *include_comment; | ||
849 | }; | ||
850 | |||
851 | /* | ||
793 | * Generic operation (for example: If, While, Store) | 852 | * Generic operation (for example: If, While, Store) |
794 | */ | 853 | */ |
795 | struct acpi_parse_obj_common { | 854 | struct acpi_parse_obj_common { |
@@ -814,6 +873,8 @@ struct acpi_parse_obj_asl { | |||
814 | ACPI_PARSE_COMMON union acpi_parse_object *child; | 873 | ACPI_PARSE_COMMON union acpi_parse_object *child; |
815 | union acpi_parse_object *parent_method; | 874 | union acpi_parse_object *parent_method; |
816 | char *filename; | 875 | char *filename; |
876 | u8 file_changed; | ||
877 | char *parent_filename; | ||
817 | char *external_name; | 878 | char *external_name; |
818 | char *namepath; | 879 | char *namepath; |
819 | char name_seg[4]; | 880 | char name_seg[4]; |
@@ -843,6 +904,14 @@ union acpi_parse_object { | |||
843 | struct acpi_parse_obj_asl asl; | 904 | struct acpi_parse_obj_asl asl; |
844 | }; | 905 | }; |
845 | 906 | ||
907 | struct asl_comment_state { | ||
908 | u8 comment_type; | ||
909 | u32 spaces_before; | ||
910 | union acpi_parse_object *latest_parse_node; | ||
911 | union acpi_parse_object *parsing_paren_brace_node; | ||
912 | u8 capture_comments; | ||
913 | }; | ||
914 | |||
846 | /* | 915 | /* |
847 | * Parse state - one state per parser invocation and each control | 916 | * Parse state - one state per parser invocation and each control |
848 | * method. | 917 | * method. |
diff --git a/drivers/acpi/acpica/acmacros.h b/drivers/acpi/acpica/acmacros.h index c3337514e0ed..c7f0c96cc00f 100644 --- a/drivers/acpi/acpica/acmacros.h +++ b/drivers/acpi/acpica/acmacros.h | |||
@@ -493,4 +493,39 @@ | |||
493 | 493 | ||
494 | #define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7')) | 494 | #define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7')) |
495 | 495 | ||
496 | /* | ||
497 | * Macors used for the ASL-/ASL+ converter utility | ||
498 | */ | ||
499 | #ifdef ACPI_ASL_COMPILER | ||
500 | |||
501 | #define ASL_CV_LABEL_FILENODE(a) cv_label_file_node(a); | ||
502 | #define ASL_CV_CAPTURE_COMMENTS_ONLY(a) cv_capture_comments_only (a); | ||
503 | #define ASL_CV_CAPTURE_COMMENTS(a) cv_capture_comments (a); | ||
504 | #define ASL_CV_TRANSFER_COMMENTS(a) cv_transfer_comments (a); | ||
505 | #define ASL_CV_CLOSE_PAREN(a,b) cv_close_paren_write_comment(a,b); | ||
506 | #define ASL_CV_CLOSE_BRACE(a,b) cv_close_brace_write_comment(a,b); | ||
507 | #define ASL_CV_SWITCH_FILES(a,b) cv_switch_files(a,b); | ||
508 | #define ASL_CV_CLEAR_OP_COMMENTS(a) cv_clear_op_comments(a); | ||
509 | #define ASL_CV_PRINT_ONE_COMMENT(a,b,c,d) cv_print_one_comment_type (a,b,c,d); | ||
510 | #define ASL_CV_PRINT_ONE_COMMENT_LIST(a,b) cv_print_one_comment_list (a,b); | ||
511 | #define ASL_CV_FILE_HAS_SWITCHED(a) cv_file_has_switched(a) | ||
512 | #define ASL_CV_INIT_FILETREE(a,b,c) cv_init_file_tree(a,b,c); | ||
513 | |||
514 | #else | ||
515 | |||
516 | #define ASL_CV_LABEL_FILENODE(a) | ||
517 | #define ASL_CV_CAPTURE_COMMENTS_ONLY(a) | ||
518 | #define ASL_CV_CAPTURE_COMMENTS(a) | ||
519 | #define ASL_CV_TRANSFER_COMMENTS(a) | ||
520 | #define ASL_CV_CLOSE_PAREN(a,b) acpi_os_printf (")"); | ||
521 | #define ASL_CV_CLOSE_BRACE(a,b) acpi_os_printf ("}"); | ||
522 | #define ASL_CV_SWITCH_FILES(a,b) | ||
523 | #define ASL_CV_CLEAR_OP_COMMENTS(a) | ||
524 | #define ASL_CV_PRINT_ONE_COMMENT(a,b,c,d) | ||
525 | #define ASL_CV_PRINT_ONE_COMMENT_LIST(a,b) | ||
526 | #define ASL_CV_FILE_HAS_SWITCHED(a) 0 | ||
527 | #define ASL_CV_INIT_FILETREE(a,b,c) | ||
528 | |||
529 | #endif | ||
530 | |||
496 | #endif /* ACMACROS_H */ | 531 | #endif /* ACMACROS_H */ |
diff --git a/drivers/acpi/acpica/acopcode.h b/drivers/acpi/acpica/acopcode.h index e758f098ff4b..a5d9af758c52 100644 --- a/drivers/acpi/acpica/acopcode.h +++ b/drivers/acpi/acpica/acopcode.h | |||
@@ -90,6 +90,7 @@ | |||
90 | #define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST) | 90 | #define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST) |
91 | #define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA) | 91 | #define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA) |
92 | #define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) | 92 | #define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) |
93 | #define ARGP_COMMENT_OP ARGP_LIST2 (ARGP_BYTEDATA, ARGP_COMMENT) | ||
93 | #define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) | 94 | #define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) |
94 | #define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) | 95 | #define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) |
95 | #define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SIMPLENAME, ARGP_TARGET) | 96 | #define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SIMPLENAME, ARGP_TARGET) |
@@ -223,6 +224,7 @@ | |||
223 | #define ARGI_BUFFER_OP ARGI_LIST1 (ARGI_INTEGER) | 224 | #define ARGI_BUFFER_OP ARGI_LIST1 (ARGI_INTEGER) |
224 | #define ARGI_BYTE_OP ARGI_INVALID_OPCODE | 225 | #define ARGI_BYTE_OP ARGI_INVALID_OPCODE |
225 | #define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE | 226 | #define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE |
227 | #define ARGI_COMMENT_OP ARGI_INVALID_OPCODE | ||
226 | #define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_ANYTYPE, ARGI_ANYTYPE, ARGI_TARGETREF) | 228 | #define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_ANYTYPE, ARGI_ANYTYPE, ARGI_TARGETREF) |
227 | #define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF) | 229 | #define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF) |
228 | #define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF) | 230 | #define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF) |
diff --git a/drivers/acpi/acpica/amlcode.h b/drivers/acpi/acpica/amlcode.h index 7e2b369487ae..176f7e9b4d0e 100644 --- a/drivers/acpi/acpica/amlcode.h +++ b/drivers/acpi/acpica/amlcode.h | |||
@@ -137,7 +137,8 @@ | |||
137 | #define AML_NOOP_OP (u16) 0xa3 | 137 | #define AML_NOOP_OP (u16) 0xa3 |
138 | #define AML_RETURN_OP (u16) 0xa4 | 138 | #define AML_RETURN_OP (u16) 0xa4 |
139 | #define AML_BREAK_OP (u16) 0xa5 | 139 | #define AML_BREAK_OP (u16) 0xa5 |
140 | #define AML_BREAKPOINT_OP (u16) 0xcc | 140 | #define AML_COMMENT_OP (u16) 0xa9 |
141 | #define AML_BREAKPOINT_OP (u16) 0xcc | ||
141 | #define AML_ONES_OP (u16) 0xff | 142 | #define AML_ONES_OP (u16) 0xff |
142 | 143 | ||
143 | /* | 144 | /* |
@@ -236,6 +237,7 @@ | |||
236 | #define ARGP_SIMPLENAME 0x12 /* name_string | local_term | arg_term */ | 237 | #define ARGP_SIMPLENAME 0x12 /* name_string | local_term | arg_term */ |
237 | #define ARGP_NAME_OR_REF 0x13 /* For object_type only */ | 238 | #define ARGP_NAME_OR_REF 0x13 /* For object_type only */ |
238 | #define ARGP_MAX 0x13 | 239 | #define ARGP_MAX 0x13 |
240 | #define ARGP_COMMENT 0x14 | ||
239 | 241 | ||
240 | /* | 242 | /* |
241 | * Resolved argument types for the AML Interpreter | 243 | * Resolved argument types for the AML Interpreter |
diff --git a/drivers/acpi/acpica/psargs.c b/drivers/acpi/acpica/psargs.c index cda1e151dbc7..eb9dfaca555f 100644 --- a/drivers/acpi/acpica/psargs.c +++ b/drivers/acpi/acpica/psargs.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include "amlcode.h" | 47 | #include "amlcode.h" |
48 | #include "acnamesp.h" | 48 | #include "acnamesp.h" |
49 | #include "acdispat.h" | 49 | #include "acdispat.h" |
50 | #include "acconvert.h" | ||
50 | 51 | ||
51 | #define _COMPONENT ACPI_PARSER | 52 | #define _COMPONENT ACPI_PARSER |
52 | ACPI_MODULE_NAME("psargs") | 53 | ACPI_MODULE_NAME("psargs") |
@@ -502,6 +503,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state | |||
502 | 503 | ||
503 | ACPI_FUNCTION_TRACE(ps_get_next_field); | 504 | ACPI_FUNCTION_TRACE(ps_get_next_field); |
504 | 505 | ||
506 | ASL_CV_CAPTURE_COMMENTS_ONLY(parser_state); | ||
505 | aml = parser_state->aml; | 507 | aml = parser_state->aml; |
506 | 508 | ||
507 | /* Determine field type */ | 509 | /* Determine field type */ |
@@ -546,6 +548,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state | |||
546 | 548 | ||
547 | /* Decode the field type */ | 549 | /* Decode the field type */ |
548 | 550 | ||
551 | ASL_CV_CAPTURE_COMMENTS_ONLY(parser_state); | ||
549 | switch (opcode) { | 552 | switch (opcode) { |
550 | case AML_INT_NAMEDFIELD_OP: | 553 | case AML_INT_NAMEDFIELD_OP: |
551 | 554 | ||
@@ -555,6 +558,22 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state | |||
555 | acpi_ps_set_name(field, name); | 558 | acpi_ps_set_name(field, name); |
556 | parser_state->aml += ACPI_NAME_SIZE; | 559 | parser_state->aml += ACPI_NAME_SIZE; |
557 | 560 | ||
561 | ASL_CV_CAPTURE_COMMENTS_ONLY(parser_state); | ||
562 | |||
563 | #ifdef ACPI_ASL_COMPILER | ||
564 | /* | ||
565 | * Because the package length isn't represented as a parse tree object, | ||
566 | * take comments surrounding this and add to the previously created | ||
567 | * parse node. | ||
568 | */ | ||
569 | if (field->common.inline_comment) { | ||
570 | field->common.name_comment = | ||
571 | field->common.inline_comment; | ||
572 | } | ||
573 | field->common.inline_comment = acpi_gbl_current_inline_comment; | ||
574 | acpi_gbl_current_inline_comment = NULL; | ||
575 | #endif | ||
576 | |||
558 | /* Get the length which is encoded as a package length */ | 577 | /* Get the length which is encoded as a package length */ |
559 | 578 | ||
560 | field->common.value.size = | 579 | field->common.value.size = |
@@ -609,11 +628,13 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state | |||
609 | if (ACPI_GET8(parser_state->aml) == AML_BUFFER_OP) { | 628 | if (ACPI_GET8(parser_state->aml) == AML_BUFFER_OP) { |
610 | parser_state->aml++; | 629 | parser_state->aml++; |
611 | 630 | ||
631 | ASL_CV_CAPTURE_COMMENTS_ONLY(parser_state); | ||
612 | pkg_end = parser_state->aml; | 632 | pkg_end = parser_state->aml; |
613 | pkg_length = | 633 | pkg_length = |
614 | acpi_ps_get_next_package_length(parser_state); | 634 | acpi_ps_get_next_package_length(parser_state); |
615 | pkg_end += pkg_length; | 635 | pkg_end += pkg_length; |
616 | 636 | ||
637 | ASL_CV_CAPTURE_COMMENTS_ONLY(parser_state); | ||
617 | if (parser_state->aml < pkg_end) { | 638 | if (parser_state->aml < pkg_end) { |
618 | 639 | ||
619 | /* Non-empty list */ | 640 | /* Non-empty list */ |
@@ -630,6 +651,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state | |||
630 | opcode = ACPI_GET8(parser_state->aml); | 651 | opcode = ACPI_GET8(parser_state->aml); |
631 | parser_state->aml++; | 652 | parser_state->aml++; |
632 | 653 | ||
654 | ASL_CV_CAPTURE_COMMENTS_ONLY(parser_state); | ||
633 | switch (opcode) { | 655 | switch (opcode) { |
634 | case AML_BYTE_OP: /* AML_BYTEDATA_ARG */ | 656 | case AML_BYTE_OP: /* AML_BYTEDATA_ARG */ |
635 | 657 | ||
@@ -660,6 +682,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state | |||
660 | 682 | ||
661 | /* Fill in bytelist data */ | 683 | /* Fill in bytelist data */ |
662 | 684 | ||
685 | ASL_CV_CAPTURE_COMMENTS_ONLY(parser_state); | ||
663 | arg->named.value.size = buffer_length; | 686 | arg->named.value.size = buffer_length; |
664 | arg->named.data = parser_state->aml; | 687 | arg->named.data = parser_state->aml; |
665 | } | 688 | } |
diff --git a/drivers/acpi/acpica/psloop.c b/drivers/acpi/acpica/psloop.c index b7da881b66da..b4224005783c 100644 --- a/drivers/acpi/acpica/psloop.c +++ b/drivers/acpi/acpica/psloop.c | |||
@@ -55,6 +55,7 @@ | |||
55 | #include "acparser.h" | 55 | #include "acparser.h" |
56 | #include "acdispat.h" | 56 | #include "acdispat.h" |
57 | #include "amlcode.h" | 57 | #include "amlcode.h" |
58 | #include "acconvert.h" | ||
58 | 59 | ||
59 | #define _COMPONENT ACPI_PARSER | 60 | #define _COMPONENT ACPI_PARSER |
60 | ACPI_MODULE_NAME("psloop") | 61 | ACPI_MODULE_NAME("psloop") |
@@ -132,6 +133,21 @@ acpi_ps_get_arguments(struct acpi_walk_state *walk_state, | |||
132 | !walk_state->arg_count) { | 133 | !walk_state->arg_count) { |
133 | walk_state->aml = walk_state->parser_state.aml; | 134 | walk_state->aml = walk_state->parser_state.aml; |
134 | 135 | ||
136 | switch (op->common.aml_opcode) { | ||
137 | case AML_METHOD_OP: | ||
138 | case AML_BUFFER_OP: | ||
139 | case AML_PACKAGE_OP: | ||
140 | case AML_VARIABLE_PACKAGE_OP: | ||
141 | case AML_WHILE_OP: | ||
142 | |||
143 | break; | ||
144 | |||
145 | default: | ||
146 | |||
147 | ASL_CV_CAPTURE_COMMENTS(walk_state); | ||
148 | break; | ||
149 | } | ||
150 | |||
135 | status = | 151 | status = |
136 | acpi_ps_get_next_arg(walk_state, | 152 | acpi_ps_get_next_arg(walk_state, |
137 | &(walk_state->parser_state), | 153 | &(walk_state->parser_state), |
@@ -480,6 +496,8 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) | |||
480 | /* Iterative parsing loop, while there is more AML to process: */ | 496 | /* Iterative parsing loop, while there is more AML to process: */ |
481 | 497 | ||
482 | while ((parser_state->aml < parser_state->aml_end) || (op)) { | 498 | while ((parser_state->aml < parser_state->aml_end) || (op)) { |
499 | ASL_CV_CAPTURE_COMMENTS(walk_state); | ||
500 | |||
483 | aml_op_start = parser_state->aml; | 501 | aml_op_start = parser_state->aml; |
484 | if (!op) { | 502 | if (!op) { |
485 | status = | 503 | status = |
@@ -516,6 +534,20 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) | |||
516 | */ | 534 | */ |
517 | walk_state->arg_count = 0; | 535 | walk_state->arg_count = 0; |
518 | 536 | ||
537 | switch (op->common.aml_opcode) { | ||
538 | case AML_BYTE_OP: | ||
539 | case AML_WORD_OP: | ||
540 | case AML_DWORD_OP: | ||
541 | case AML_QWORD_OP: | ||
542 | |||
543 | break; | ||
544 | |||
545 | default: | ||
546 | |||
547 | ASL_CV_CAPTURE_COMMENTS(walk_state); | ||
548 | break; | ||
549 | } | ||
550 | |||
519 | /* Are there any arguments that must be processed? */ | 551 | /* Are there any arguments that must be processed? */ |
520 | 552 | ||
521 | if (walk_state->arg_types) { | 553 | if (walk_state->arg_types) { |
diff --git a/drivers/acpi/acpica/psobject.c b/drivers/acpi/acpica/psobject.c index 5c4aff0f4f26..5bcb61831706 100644 --- a/drivers/acpi/acpica/psobject.c +++ b/drivers/acpi/acpica/psobject.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include "accommon.h" | 45 | #include "accommon.h" |
46 | #include "acparser.h" | 46 | #include "acparser.h" |
47 | #include "amlcode.h" | 47 | #include "amlcode.h" |
48 | #include "acconvert.h" | ||
48 | 49 | ||
49 | #define _COMPONENT ACPI_PARSER | 50 | #define _COMPONENT ACPI_PARSER |
50 | ACPI_MODULE_NAME("psobject") | 51 | ACPI_MODULE_NAME("psobject") |
@@ -190,6 +191,7 @@ acpi_ps_build_named_op(struct acpi_walk_state *walk_state, | |||
190 | */ | 191 | */ |
191 | while (GET_CURRENT_ARG_TYPE(walk_state->arg_types) && | 192 | while (GET_CURRENT_ARG_TYPE(walk_state->arg_types) && |
192 | (GET_CURRENT_ARG_TYPE(walk_state->arg_types) != ARGP_NAME)) { | 193 | (GET_CURRENT_ARG_TYPE(walk_state->arg_types) != ARGP_NAME)) { |
194 | ASL_CV_CAPTURE_COMMENTS(walk_state); | ||
193 | status = | 195 | status = |
194 | acpi_ps_get_next_arg(walk_state, | 196 | acpi_ps_get_next_arg(walk_state, |
195 | &(walk_state->parser_state), | 197 | &(walk_state->parser_state), |
@@ -203,6 +205,18 @@ acpi_ps_build_named_op(struct acpi_walk_state *walk_state, | |||
203 | INCREMENT_ARG_LIST(walk_state->arg_types); | 205 | INCREMENT_ARG_LIST(walk_state->arg_types); |
204 | } | 206 | } |
205 | 207 | ||
208 | /* are there any inline comments associated with the name_seg?? If so, save this. */ | ||
209 | |||
210 | ASL_CV_CAPTURE_COMMENTS(walk_state); | ||
211 | |||
212 | #ifdef ACPI_ASL_COMPILER | ||
213 | if (acpi_gbl_current_inline_comment != NULL) { | ||
214 | unnamed_op->common.name_comment = | ||
215 | acpi_gbl_current_inline_comment; | ||
216 | acpi_gbl_current_inline_comment = NULL; | ||
217 | } | ||
218 | #endif | ||
219 | |||
206 | /* | 220 | /* |
207 | * Make sure that we found a NAME and didn't run out of arguments | 221 | * Make sure that we found a NAME and didn't run out of arguments |
208 | */ | 222 | */ |
@@ -243,6 +257,30 @@ acpi_ps_build_named_op(struct acpi_walk_state *walk_state, | |||
243 | 257 | ||
244 | acpi_ps_append_arg(*op, unnamed_op->common.value.arg); | 258 | acpi_ps_append_arg(*op, unnamed_op->common.value.arg); |
245 | 259 | ||
260 | #ifdef ACPI_ASL_COMPILER | ||
261 | |||
262 | /* save any comments that might be associated with unnamed_op. */ | ||
263 | |||
264 | (*op)->common.inline_comment = unnamed_op->common.inline_comment; | ||
265 | (*op)->common.end_node_comment = unnamed_op->common.end_node_comment; | ||
266 | (*op)->common.close_brace_comment = | ||
267 | unnamed_op->common.close_brace_comment; | ||
268 | (*op)->common.name_comment = unnamed_op->common.name_comment; | ||
269 | (*op)->common.comment_list = unnamed_op->common.comment_list; | ||
270 | (*op)->common.end_blk_comment = unnamed_op->common.end_blk_comment; | ||
271 | (*op)->common.cv_filename = unnamed_op->common.cv_filename; | ||
272 | (*op)->common.cv_parent_filename = | ||
273 | unnamed_op->common.cv_parent_filename; | ||
274 | (*op)->named.aml = unnamed_op->common.aml; | ||
275 | |||
276 | unnamed_op->common.inline_comment = NULL; | ||
277 | unnamed_op->common.end_node_comment = NULL; | ||
278 | unnamed_op->common.close_brace_comment = NULL; | ||
279 | unnamed_op->common.name_comment = NULL; | ||
280 | unnamed_op->common.comment_list = NULL; | ||
281 | unnamed_op->common.end_blk_comment = NULL; | ||
282 | #endif | ||
283 | |||
246 | if ((*op)->common.aml_opcode == AML_REGION_OP || | 284 | if ((*op)->common.aml_opcode == AML_REGION_OP || |
247 | (*op)->common.aml_opcode == AML_DATA_REGION_OP) { | 285 | (*op)->common.aml_opcode == AML_DATA_REGION_OP) { |
248 | /* | 286 | /* |
diff --git a/drivers/acpi/acpica/psopcode.c b/drivers/acpi/acpica/psopcode.c index b8f0617fd421..c343a0d5a3d2 100644 --- a/drivers/acpi/acpica/psopcode.c +++ b/drivers/acpi/acpica/psopcode.c | |||
@@ -652,7 +652,10 @@ const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = { | |||
652 | 652 | ||
653 | /* 81 */ ACPI_OP("External", ARGP_EXTERNAL_OP, ARGI_EXTERNAL_OP, | 653 | /* 81 */ ACPI_OP("External", ARGP_EXTERNAL_OP, ARGI_EXTERNAL_OP, |
654 | ACPI_TYPE_ANY, AML_CLASS_EXECUTE, /* ? */ | 654 | ACPI_TYPE_ANY, AML_CLASS_EXECUTE, /* ? */ |
655 | AML_TYPE_EXEC_3A_0T_0R, AML_FLAGS_EXEC_3A_0T_0R) | 655 | AML_TYPE_EXEC_3A_0T_0R, AML_FLAGS_EXEC_3A_0T_0R), |
656 | /* 82 */ ACPI_OP("Comment", ARGP_COMMENT_OP, ARGI_COMMENT_OP, | ||
657 | ACPI_TYPE_STRING, AML_CLASS_ARGUMENT, | ||
658 | AML_TYPE_LITERAL, AML_CONSTANT) | ||
656 | 659 | ||
657 | /*! [End] no source code translation !*/ | 660 | /*! [End] no source code translation !*/ |
658 | }; | 661 | }; |
diff --git a/drivers/acpi/acpica/psopinfo.c b/drivers/acpi/acpica/psopinfo.c index 89f95b7f26e9..eff22950232b 100644 --- a/drivers/acpi/acpica/psopinfo.c +++ b/drivers/acpi/acpica/psopinfo.c | |||
@@ -226,7 +226,7 @@ const u8 acpi_gbl_short_op_index[256] = { | |||
226 | /* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74, | 226 | /* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74, |
227 | /* 0x98 */ 0x75, 0x76, _UNK, _UNK, 0x77, 0x78, 0x79, 0x7A, | 227 | /* 0x98 */ 0x75, 0x76, _UNK, _UNK, 0x77, 0x78, 0x79, 0x7A, |
228 | /* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61, | 228 | /* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61, |
229 | /* 0xA8 */ 0x62, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, | 229 | /* 0xA8 */ 0x62, 0x82, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, |
230 | /* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, | 230 | /* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, |
231 | /* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, | 231 | /* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, |
232 | /* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, | 232 | /* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, |
diff --git a/drivers/acpi/acpica/pstree.c b/drivers/acpi/acpica/pstree.c index a11d475b79cd..c06d6e2fc7a5 100644 --- a/drivers/acpi/acpica/pstree.c +++ b/drivers/acpi/acpica/pstree.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include "accommon.h" | 45 | #include "accommon.h" |
46 | #include "acparser.h" | 46 | #include "acparser.h" |
47 | #include "amlcode.h" | 47 | #include "amlcode.h" |
48 | #include "acconvert.h" | ||
48 | 49 | ||
49 | #define _COMPONENT ACPI_PARSER | 50 | #define _COMPONENT ACPI_PARSER |
50 | ACPI_MODULE_NAME("pstree") | 51 | ACPI_MODULE_NAME("pstree") |
@@ -216,6 +217,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, | |||
216 | 217 | ||
217 | next = acpi_ps_get_arg(op, 0); | 218 | next = acpi_ps_get_arg(op, 0); |
218 | if (next) { | 219 | if (next) { |
220 | ASL_CV_LABEL_FILENODE(next); | ||
219 | return (next); | 221 | return (next); |
220 | } | 222 | } |
221 | 223 | ||
@@ -223,6 +225,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, | |||
223 | 225 | ||
224 | next = op->common.next; | 226 | next = op->common.next; |
225 | if (next) { | 227 | if (next) { |
228 | ASL_CV_LABEL_FILENODE(next); | ||
226 | return (next); | 229 | return (next); |
227 | } | 230 | } |
228 | 231 | ||
@@ -233,6 +236,8 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, | |||
233 | while (parent) { | 236 | while (parent) { |
234 | arg = acpi_ps_get_arg(parent, 0); | 237 | arg = acpi_ps_get_arg(parent, 0); |
235 | while (arg && (arg != origin) && (arg != op)) { | 238 | while (arg && (arg != origin) && (arg != op)) { |
239 | |||
240 | ASL_CV_LABEL_FILENODE(arg); | ||
236 | arg = arg->common.next; | 241 | arg = arg->common.next; |
237 | } | 242 | } |
238 | 243 | ||
@@ -247,6 +252,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, | |||
247 | 252 | ||
248 | /* Found sibling of parent */ | 253 | /* Found sibling of parent */ |
249 | 254 | ||
255 | ASL_CV_LABEL_FILENODE(parent->common.next); | ||
250 | return (parent->common.next); | 256 | return (parent->common.next); |
251 | } | 257 | } |
252 | 258 | ||
@@ -254,6 +260,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, | |||
254 | parent = parent->common.parent; | 260 | parent = parent->common.parent; |
255 | } | 261 | } |
256 | 262 | ||
263 | ASL_CV_LABEL_FILENODE(next); | ||
257 | return (next); | 264 | return (next); |
258 | } | 265 | } |
259 | 266 | ||
diff --git a/drivers/acpi/acpica/psutils.c b/drivers/acpi/acpica/psutils.c index 2fa38bb76a55..02642760cb93 100644 --- a/drivers/acpi/acpica/psutils.c +++ b/drivers/acpi/acpica/psutils.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include "accommon.h" | 45 | #include "accommon.h" |
46 | #include "acparser.h" | 46 | #include "acparser.h" |
47 | #include "amlcode.h" | 47 | #include "amlcode.h" |
48 | #include "acconvert.h" | ||
48 | 49 | ||
49 | #define _COMPONENT ACPI_PARSER | 50 | #define _COMPONENT ACPI_PARSER |
50 | ACPI_MODULE_NAME("psutils") | 51 | ACPI_MODULE_NAME("psutils") |
@@ -152,6 +153,15 @@ union acpi_parse_object *acpi_ps_alloc_op(u16 opcode, u8 *aml) | |||
152 | acpi_ps_init_op(op, opcode); | 153 | acpi_ps_init_op(op, opcode); |
153 | op->common.aml = aml; | 154 | op->common.aml = aml; |
154 | op->common.flags = flags; | 155 | op->common.flags = flags; |
156 | ASL_CV_CLEAR_OP_COMMENTS(op); | ||
157 | |||
158 | if (opcode == AML_SCOPE_OP) { | ||
159 | acpi_gbl_current_scope = op; | ||
160 | } | ||
161 | } | ||
162 | |||
163 | if (gbl_capture_comments) { | ||
164 | ASL_CV_TRANSFER_COMMENTS(op); | ||
155 | } | 165 | } |
156 | 166 | ||
157 | return (op); | 167 | return (op); |
@@ -174,6 +184,7 @@ void acpi_ps_free_op(union acpi_parse_object *op) | |||
174 | { | 184 | { |
175 | ACPI_FUNCTION_NAME(ps_free_op); | 185 | ACPI_FUNCTION_NAME(ps_free_op); |
176 | 186 | ||
187 | ASL_CV_CLEAR_OP_COMMENTS(op); | ||
177 | if (op->common.aml_opcode == AML_INT_RETURN_VALUE_OP) { | 188 | if (op->common.aml_opcode == AML_INT_RETURN_VALUE_OP) { |
178 | ACPI_DEBUG_PRINT((ACPI_DB_ALLOCATIONS, | 189 | ACPI_DEBUG_PRINT((ACPI_DB_ALLOCATIONS, |
179 | "Free retval op: %p\n", op)); | 190 | "Free retval op: %p\n", op)); |
diff --git a/drivers/acpi/acpica/utalloc.c b/drivers/acpi/acpica/utalloc.c index a3401bd29413..5594a359dbf1 100644 --- a/drivers/acpi/acpica/utalloc.c +++ b/drivers/acpi/acpica/utalloc.c | |||
@@ -142,6 +142,45 @@ acpi_status acpi_ut_create_caches(void) | |||
142 | if (ACPI_FAILURE(status)) { | 142 | if (ACPI_FAILURE(status)) { |
143 | return (status); | 143 | return (status); |
144 | } | 144 | } |
145 | #ifdef ACPI_ASL_COMPILER | ||
146 | /* | ||
147 | * For use with the ASL-/ASL+ option. This cache keeps track of regular | ||
148 | * 0xA9 0x01 comments. | ||
149 | */ | ||
150 | status = | ||
151 | acpi_os_create_cache("Acpi-Comment", | ||
152 | sizeof(struct acpi_comment_node), | ||
153 | ACPI_MAX_COMMENT_CACHE_DEPTH, | ||
154 | &acpi_gbl_reg_comment_cache); | ||
155 | if (ACPI_FAILURE(status)) { | ||
156 | return (status); | ||
157 | } | ||
158 | |||
159 | /* | ||
160 | * This cache keeps track of the starting addresses of where the comments | ||
161 | * lie. This helps prevent duplication of comments. | ||
162 | */ | ||
163 | status = | ||
164 | acpi_os_create_cache("Acpi-Comment-Addr", | ||
165 | sizeof(struct acpi_comment_addr_node), | ||
166 | ACPI_MAX_COMMENT_CACHE_DEPTH, | ||
167 | &acpi_gbl_comment_addr_cache); | ||
168 | if (ACPI_FAILURE(status)) { | ||
169 | return (status); | ||
170 | } | ||
171 | |||
172 | /* | ||
173 | * This cache will be used for nodes that represent files. | ||
174 | */ | ||
175 | status = | ||
176 | acpi_os_create_cache("Acpi-File", sizeof(struct acpi_file_node), | ||
177 | ACPI_MAX_COMMENT_CACHE_DEPTH, | ||
178 | &acpi_gbl_file_cache); | ||
179 | if (ACPI_FAILURE(status)) { | ||
180 | return (status); | ||
181 | } | ||
182 | #endif | ||
183 | |||
145 | #ifdef ACPI_DBG_TRACK_ALLOCATIONS | 184 | #ifdef ACPI_DBG_TRACK_ALLOCATIONS |
146 | 185 | ||
147 | /* Memory allocation lists */ | 186 | /* Memory allocation lists */ |
@@ -201,6 +240,17 @@ acpi_status acpi_ut_delete_caches(void) | |||
201 | (void)acpi_os_delete_cache(acpi_gbl_ps_node_ext_cache); | 240 | (void)acpi_os_delete_cache(acpi_gbl_ps_node_ext_cache); |
202 | acpi_gbl_ps_node_ext_cache = NULL; | 241 | acpi_gbl_ps_node_ext_cache = NULL; |
203 | 242 | ||
243 | #ifdef ACPI_ASL_COMPILER | ||
244 | (void)acpi_os_delete_cache(acpi_gbl_reg_comment_cache); | ||
245 | acpi_gbl_reg_comment_cache = NULL; | ||
246 | |||
247 | (void)acpi_os_delete_cache(acpi_gbl_comment_addr_cache); | ||
248 | acpi_gbl_comment_addr_cache = NULL; | ||
249 | |||
250 | (void)acpi_os_delete_cache(acpi_gbl_file_cache); | ||
251 | acpi_gbl_file_cache = NULL; | ||
252 | #endif | ||
253 | |||
204 | #ifdef ACPI_DBG_TRACK_ALLOCATIONS | 254 | #ifdef ACPI_DBG_TRACK_ALLOCATIONS |
205 | 255 | ||
206 | /* Debug only - display leftover memory allocation, if any */ | 256 | /* Debug only - display leftover memory allocation, if any */ |
diff --git a/drivers/acpi/acpica/utdebug.c b/drivers/acpi/acpica/utdebug.c index bd5ea3101eb7..615a885e2ca3 100644 --- a/drivers/acpi/acpica/utdebug.c +++ b/drivers/acpi/acpica/utdebug.c | |||
@@ -627,4 +627,5 @@ acpi_trace_point(acpi_trace_event_type type, u8 begin, u8 *aml, char *pathname) | |||
627 | } | 627 | } |
628 | 628 | ||
629 | ACPI_EXPORT_SYMBOL(acpi_trace_point) | 629 | ACPI_EXPORT_SYMBOL(acpi_trace_point) |
630 | |||
630 | #endif | 631 | #endif |
diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h index 07740072da55..6db3b4668b1a 100644 --- a/include/acpi/acconfig.h +++ b/include/acpi/acconfig.h | |||
@@ -78,6 +78,7 @@ | |||
78 | #define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96 /* Parse tree objects */ | 78 | #define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96 /* Parse tree objects */ |
79 | #define ACPI_MAX_OBJECT_CACHE_DEPTH 96 /* Interpreter operand objects */ | 79 | #define ACPI_MAX_OBJECT_CACHE_DEPTH 96 /* Interpreter operand objects */ |
80 | #define ACPI_MAX_NAMESPACE_CACHE_DEPTH 96 /* Namespace objects */ | 80 | #define ACPI_MAX_NAMESPACE_CACHE_DEPTH 96 /* Namespace objects */ |
81 | #define ACPI_MAX_COMMENT_CACHE_DEPTH 96 /* Comments for the -ca option */ | ||
81 | 82 | ||
82 | /* | 83 | /* |
83 | * Should the subsystem abort the loading of an ACPI table if the | 84 | * Should the subsystem abort the loading of an ACPI table if the |
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h index 83666cb3ec2c..eb0eadcf9918 100644 --- a/include/acpi/actbl2.h +++ b/include/acpi/actbl2.h | |||
@@ -87,6 +87,7 @@ | |||
87 | #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ | 87 | #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ |
88 | #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ | 88 | #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ |
89 | #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ | 89 | #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ |
90 | #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */ | ||
90 | 91 | ||
91 | #ifdef ACPI_UNDEFINED_TABLES | 92 | #ifdef ACPI_UNDEFINED_TABLES |
92 | /* | 93 | /* |