]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ACPICA: Update integer-to-hex-string conversions
authorArmin Wolf <W_Armin@gmx.de>
Fri, 27 Oct 2023 22:22:14 +0000 (00:22 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 29 Aug 2024 17:04:22 +0000 (19:04 +0200)
ACPICA commit f2cb44f6deb6325a6b348b225fc82f565a870899

Add "0x" prefix for explicitly converted integers
and suppress leading zeros in such a case.
Provides compatibility with other ACPI implementations.

Link: https://github.com/acpica/acpica/commit/f2cb44f6
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/exconvrt.c

index 9647325d290d0fd19c3cb32f0765e8996ffe0f25..bb1be42daee107fa418f01e11df11525c83d7ece 100644 (file)
@@ -417,6 +417,16 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
                        base = 10;
                        break;
 
+               case ACPI_EXPLICIT_CONVERT_HEX:
+                       /*
+                        * From to_hex_string.
+                        *
+                        * Supress leading zeros and append "0x"
+                        */
+                       string_length =
+                           ACPI_MUL_2(acpi_gbl_integer_byte_width) + 2;
+                       leading_zeros = FALSE;
+                       break;
                default:
 
                        /* Two hex string characters for each integer byte */
@@ -437,6 +447,13 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
                }
 
                new_buf = return_desc->buffer.pointer;
+               if (type == ACPI_EXPLICIT_CONVERT_HEX) {
+
+                       /* Append "0x" prefix for explicit hex conversion */
+
+                       *new_buf++ = '0';
+                       *new_buf++ = 'x';
+               }
 
                /* Convert integer to string */
 
@@ -449,6 +466,13 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
                /* Null terminate at the correct place */
 
                return_desc->string.length = string_length;
+               if (type == ACPI_EXPLICIT_CONVERT_HEX) {
+
+                       /* Take "0x" prefix into account */
+
+                       return_desc->string.length += 2;
+               }
+
                new_buf[string_length] = 0;
                break;