[PATCH] Fix typecast warning on aarch64

Naresh Bhat naresh.bhat at linaro.org
Mon Aug 12 16:42:29 UTC 2013


Hi Colin Ian King,

Thank you very much.  I will do the needful and re-work on it.

Regards
-Naresh Bhat

On 12 August 2013 21:50, Colin Ian King <colin.king at canonical.com> wrote:
> The casting here is problematic, it will break 32 bit builds. ACPI
> integers are UINT64 so I guess the underlying problem is in:
> src/acpica/source/include/platform/aclinux.h
>
> #if defined(__ia64__) || defined(__x86_64__)
> #define ACPI_MACHINE_WIDTH          64
> #define COMPILER_DEPENDENT_INT64    long
> #define COMPILER_DEPENDENT_UINT64   unsigned long
> #else
> #define ACPI_MACHINE_WIDTH          32
> #define COMPILER_DEPENDENT_INT64    long long
> #define COMPILER_DEPENDENT_UINT64   unsigned long long
> #define ACPI_USE_NATIVE_DIVIDE
> #endif
>
> .. perhaps you to add a defined( ) for aarch64 otherwise it defaults to
> 32 bit which causes these build issues.
>
> If that works then the fix needs to be also sent to the ACPICA mailing
> list too.
>
> Colin
>
> On 12/08/13 11:29, naresh.bhat at linaro.org wrote:
>> From: Naresh Bhat <naresh.bhat at linaro.org>
>>
>> Signed-off-by: Naresh Bhat<naresh.bhat at linaro.org>
>>
>> This patch fix all typecast warnings being treated as errors
>> occured while compiling on ARMv8 aarch64 architecture.
>> ---
>>  src/acpi/method/method.c |   92 +++++++++++++++++++++++-----------------------
>>  1 file changed, 46 insertions(+), 46 deletions(-)
>>
>> diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
>> index f46fdff..327a887 100644
>> --- a/src/acpi/method/method.c
>> +++ b/src/acpi/method/method.c
>> @@ -976,14 +976,14 @@ static void method_test_HID_return(
>>                       tmp, sizeof(tmp)))
>>                       fwts_passed(fw, "%s returned an integer "
>>                               "0x%8.8" PRIx64 " (EISA ID %s).",
>> -                             name, obj->Integer.Value, tmp);
>> +                             name, (long unsigned int)obj->Integer.Value, tmp);
>>               else
>>                       fwts_failed(fw, LOG_LEVEL_MEDIUM,
>>                               "MethodHIDInvalidInteger",
>>                               "%s returned a integer 0x%8.8" PRIx64 " "
>>                               "(EISA ID %s) but the this is not a valid "
>>                               "EISA ID encoded PNP ID.",
>> -                             name, obj->Integer.Value, tmp);
>> +                             name, (long unsigned int)obj->Integer.Value, tmp);
>>               break;
>>       default:
>>               fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_HIDBadReturnType",
>> @@ -1865,7 +1865,7 @@ static void method_test_FIX_return(
>>                               "%s returned an integer "
>>                               "0x%8.8" PRIx64 " in package element "
>>                               "%" PRIu32 " that is not a valid "
>> -                             "EISA ID.", name, obj->Integer.Value, i);
>> +                             "EISA ID.", name, (long unsigned int)obj->Integer.Value, i);
>>                       failed = true;
>>               }
>>       }
>> @@ -2092,7 +2092,7 @@ static void method_test_SEG_return(
>>                       "%s returned value 0x%8.8" PRIx64 " and some of the "
>>                       "upper 16 reserved bits are set when they "
>>                       "should in fact be zero.",
>> -                     name, obj->Integer.Value);
>> +                     name, (long unsigned int)obj->Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>       } else
>>               method_passed_sane_uint64(fw, name, obj->Integer.Value);
>> @@ -2333,9 +2333,9 @@ static void method_test_Sx__return(
>>       }
>>
>>       fwts_log_info(fw, "%s PM1a_CNT.SLP_TYP value: 0x%8.8" PRIx64, name,
>> -             obj->Package.Elements[0].Integer.Value);
>> +             (long unsigned int)obj->Package.Elements[0].Integer.Value);
>>       fwts_log_info(fw, "%s PM1b_CNT.SLP_TYP value: 0x%8.8" PRIx64, name,
>> -             obj->Package.Elements[1].Integer.Value);
>> +             (long unsigned int)obj->Package.Elements[1].Integer.Value);
>>
>>       if (!failed)
>>               method_passed_sane(fw, name, "package");
>> @@ -2484,7 +2484,7 @@ static void method_test_CSD_return(
>>                               "%s sub-package %d element 0 (NumEntries) "
>>                               "was expected to have value 0x%" PRIx64 ".",
>>                               name, i,
>> -                             pkg->Package.Elements[0].Integer.Value);
>> +                             (long unsigned int)pkg->Package.Elements[0].Integer.Value);
>>                       fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>                       failed = true;
>>               }
>> @@ -2496,7 +2496,7 @@ static void method_test_CSD_return(
>>                               "was expected to have value 1, instead it "
>>                               "was 0x%" PRIx64 ".",
>>                               name, i,
>> -                             pkg->Package.Elements[1].Integer.Value);
>> +                             (long unsigned int)pkg->Package.Elements[1].Integer.Value);
>>                       fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>                       failed = true;
>>               }
>> @@ -2511,7 +2511,7 @@ static void method_test_CSD_return(
>>                               "0xfd (SW_ANY) or 0xfe (HW_ALL), instead it "
>>                               "was 0x%" PRIx64 ".",
>>                               name, i,
>> -                             pkg->Package.Elements[3].Integer.Value);
>> +                             (long unsigned int)pkg->Package.Elements[3].Integer.Value);
>>                       fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>                       failed = true;
>>               }
>> @@ -2581,7 +2581,7 @@ static void method_test_CST_return(
>>                       "%" PRIu32 " returned C state sub-elements yet _CST "
>>                       "reports it has %" PRIu64 " C states.",
>>                       name, obj->Package.Count - 1,
>> -                     obj->Package.Elements[0].Integer.Value);
>> +                     (long unsigned int)obj->Package.Elements[0].Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>               return;
>>       }
>> @@ -2677,9 +2677,9 @@ static void method_test_CST_return(
>>                               fwts_log_info_verbatum(fw,
>>                                       "%2" PRIu32 "     C%" PRIu64 "     %6" PRIu64 "    %6" PRIu64,
>>                                       i,
>> -                                     pkg->Package.Elements[1].Integer.Value,
>> -                                     pkg->Package.Elements[2].Integer.Value,
>> -                                     pkg->Package.Elements[3].Integer.Value);
>> +                                     (long unsigned int)pkg->Package.Elements[1].Integer.Value,
>> +                                     (long unsigned int)pkg->Package.Elements[2].Integer.Value,
>> +                                     (long unsigned int)pkg->Package.Elements[3].Integer.Value);
>>                       } else {
>>                               fwts_log_info_verbatum(fw,
>>                                       "%2" PRIu32 "     --      -----     -----", i);
>> @@ -2850,10 +2850,10 @@ static void method_test_PSS_return(
>>                               fwts_log_info_verbatum(fw, " %3d   %7" PRIu64 " %8" PRIu64
>>                                       " %5" PRIu64 "     %5" PRIu64,
>>                                       i,
>> -                                     pstate->Package.Elements[0].Integer.Value,
>> -                                     pstate->Package.Elements[1].Integer.Value,
>> -                                     pstate->Package.Elements[2].Integer.Value,
>> -                                     pstate->Package.Elements[3].Integer.Value);
>> +                                     (long unsigned int)pstate->Package.Elements[0].Integer.Value,
>> +                                     (long unsigned int)pstate->Package.Elements[1].Integer.Value,
>> +                                     (long unsigned int)pstate->Package.Elements[2].Integer.Value,
>> +                                     (long unsigned int)pstate->Package.Elements[3].Integer.Value);
>>                       } else {
>>                               fwts_log_info_verbatum(fw,
>>                                       " %3d      ----    -----    --        -- (invalid)", i);
>> @@ -3004,7 +3004,7 @@ static void method_test_TSD_return(
>>                               " element 0 (NumEntries) "
>>                               "was expected to have value 0x%" PRIx64 ".",
>>                               name, i,
>> -                             pkg->Package.Elements[0].Integer.Value);
>> +                             (long unsigned int)pkg->Package.Elements[0].Integer.Value);
>>                       fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>                       failed = true;
>>               }
>> @@ -3017,7 +3017,7 @@ static void method_test_TSD_return(
>>                               "was expected to have value 1, instead it "
>>                               "was 0x%" PRIx64 ".",
>>                               name, i,
>> -                             pkg->Package.Elements[1].Integer.Value);
>> +                             (long unsigned int)pkg->Package.Elements[1].Integer.Value);
>>                       fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>                       failed = true;
>>               }
>> @@ -3033,7 +3033,7 @@ static void method_test_TSD_return(
>>                               "0xfd (SW_ANY) or 0xfe (HW_ALL), instead it "
>>                               "was 0x%" PRIx64 ".",
>>                               name, i,
>> -                             pkg->Package.Elements[3].Integer.Value);
>> +                             (long unsigned int)pkg->Package.Elements[3].Integer.Value);
>>                       fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>                       failed = true;
>>               }
>> @@ -3140,7 +3140,7 @@ static void method_test_TSS_return(
>>                               "was expected to have value 1..100, instead "
>>                               "was %" PRIu64 ".",
>>                               name, i,
>> -                             pkg->Package.Elements[0].Integer.Value);
>> +                             (long unsigned int)pkg->Package.Elements[0].Integer.Value);
>>                       fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>                       failed = true;
>>               }
>> @@ -3159,11 +3159,11 @@ static void method_test_TSS_return(
>>                               fwts_log_info_verbatum(fw,
>>                                       "  %3d    %3" PRIu64 "%%  %7" PRIu64 "  %7" PRIu64
>>                                       "      %2.2" PRIx64 "      %2.2" PRIx64, i,
>> -                                     pkg->Package.Elements[0].Integer.Value,
>> -                                     pkg->Package.Elements[1].Integer.Value,
>> -                                     pkg->Package.Elements[2].Integer.Value,
>> -                                     pkg->Package.Elements[3].Integer.Value,
>> -                                     pkg->Package.Elements[4].Integer.Value);
>> +                                     (long unsigned int)pkg->Package.Elements[0].Integer.Value,
>> +                                     (long unsigned int)pkg->Package.Elements[1].Integer.Value,
>> +                                     (long unsigned int)pkg->Package.Elements[2].Integer.Value,
>> +                                     (long unsigned int)pkg->Package.Elements[3].Integer.Value,
>> +                                     (long unsigned int)pkg->Package.Elements[4].Integer.Value);
>>                       } else {
>>                               fwts_log_info_verbatum(fw,
>>                                       "  %3d    ----    -----    -----      --      -- (invalid)", i);
>> @@ -3243,7 +3243,7 @@ static void method_test_GCP_return(
>>                       "%s returned %" PRId64 ", should be between 0 and 15, "
>>                       "one or more of the reserved bits 4..31 seem "
>>                       "to be set.",
>> -                     name, obj->Integer.Value);
>> +                     name, (long unsigned int)obj->Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>       } else
>>               method_passed_sane_uint64(fw, name, obj->Integer.Value);
>> @@ -3308,7 +3308,7 @@ static void method_test_GWS_return(
>>                       "%s returned %" PRIu64 ", should be between 0 and 3, "
>>                       "one or more of the reserved bits 2..31 seem "
>>                       "to be set.",
>> -                     name, obj->Integer.Value);
>> +                     name, (long unsigned int)obj->Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>       } else
>>               method_passed_sane_uint64(fw, name, obj->Integer.Value);
>> @@ -3400,13 +3400,13 @@ static void method_test_SBS_return(
>>       switch (obj->Integer.Value) {
>>       case 0 ... 4:
>>               fwts_passed(fw, "%s correctly returned value %" PRIu64 " %s",
>> -                     name, obj->Integer.Value,
>> +                     name, (long unsigned int)obj->Integer.Value,
>>                       sbs_info[obj->Integer.Value]);
>>               break;
>>       default:
>>               fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_SBSReturn",
>>                       "%s returned %" PRIu64 ", should be between 0 and 4.",
>> -                     name, obj->Integer.Value);
>> +                     name, (long unsigned int)obj->Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>               fwts_advice(fw,
>>                       "Smart Battery %s is incorrectly informing "
>> @@ -3485,7 +3485,7 @@ static void method_test_BIF_return(
>>                       "Method_BIFBadUnits",
>>                       "%s: Expected Power Unit (Element 0) to be "
>>                       "0 (mWh) or 1 (mAh), got 0x%8.8" PRIx64 ".",
>> -                     name, obj->Package.Elements[0].Integer.Value);
>> +                     name, (long unsigned int)obj->Package.Elements[0].Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>               failed = true;
>>       }
>> @@ -3522,7 +3522,7 @@ static void method_test_BIF_return(
>>                       "%s: Expected Battery Technology Unit "
>>                       "(Element 3) to be 0 (Primary) or 1 "
>>                       "(Secondary), got 0x%8.8" PRIx64 ".",
>> -                     name, obj->Package.Elements[3].Integer.Value);
>> +                     name, (long unsigned int)obj->Package.Elements[3].Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>               failed = true;
>>       }
>> @@ -3630,7 +3630,7 @@ static void method_test_BIX_return(
>>                       "%s: Expected %s (Element 1) to be "
>>                       "0 (mWh) or 1 (mAh), got 0x%8.8" PRIx64 ".",
>>                       name, elements[1].name,
>> -                     obj->Package.Elements[1].Integer.Value);
>> +                     (long unsigned int)obj->Package.Elements[1].Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>               failed = true;
>>       }
>> @@ -3670,7 +3670,7 @@ static void method_test_BIX_return(
>>                       "(Element 4) to be 0 (Primary) or 1 "
>>                       "(Secondary), got 0x%8.8" PRIx64 ".",
>>                       name, elements[4].name,
>> -                     obj->Package.Elements[4].Integer.Value);
>> +                     (long unsigned int)obj->Package.Elements[4].Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>               failed = true;
>>       }
>> @@ -3786,7 +3786,7 @@ static void method_test_BST_return(
>>                       "Method_BSTBadState",
>>                       "%s: Expected Battery State (Element 0) to "
>>                       "be 0..7, got 0x%8.8" PRIx64 ".",
>> -                     name, obj->Package.Elements[0].Integer.Value);
>> +                     name, (long unsigned int)obj->Package.Elements[0].Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>               failed = true;
>>       }
>> @@ -3797,7 +3797,7 @@ static void method_test_BST_return(
>>                       "%s: Battery State (Element 0) is "
>>                       "indicating both charging and discharginng "
>>                       "which is not allowed. Got value 0x%8.8" PRIx64 ".",
>> -                     name, obj->Package.Elements[0].Integer.Value);
>> +                     name, (long unsigned int)obj->Package.Elements[0].Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>               failed = true;
>>       }
>> @@ -3943,7 +3943,7 @@ static void method_test_PSR_return(
>>                       "Method_PSRZeroOrOne",
>>                       "%s returned 0x%8.8" PRIx64 ", expected 0 "
>>                       "(offline) or 1 (online)",
>> -                     name, obj->Integer.Value);
>> +                     name, (long unsigned int)obj->Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>       } else
>>               method_passed_sane_uint64(fw, name, obj->Integer.Value);
>> @@ -4117,7 +4117,7 @@ static void method_test_THERM_return(
>>                               "%s correctly returned sane looking "
>>                               "value 0x%8.8" PRIx64 " (%5.1f degrees K)",
>>                               method,
>> -                             obj->Integer.Value,
>> +                             (long unsigned int)obj->Integer.Value,
>>                               (float)((uint64_t)obj->Integer.Value) / 10.0);
>>               } else {
>>                       fwts_failed(fw, LOG_LEVEL_MEDIUM,
>> @@ -4126,7 +4126,7 @@ static void method_test_THERM_return(
>>                               "0 degrees C: 0x%8.8" PRIx64 " (%5.1f "
>>                               "degrees K)",
>>                               method,
>> -                             obj->Integer.Value,
>> +                             (long unsigned int)obj->Integer.Value,
>>                               (float)((uint64_t)obj->Integer.Value) / 10.0);
>>                       fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>                       fwts_advice(fw,
>> @@ -4596,8 +4596,8 @@ static void method_test_BCL_return(
>>                       " power (%" PRIu64 ") is less than "
>>                               "brightness level when on "
>>                       "battery power (%" PRIu64 ").",
>> -                     obj->Package.Elements[0].Integer.Value,
>> -                     obj->Package.Elements[1].Integer.Value);
>> +                     (long unsigned int)obj->Package.Elements[0].Integer.Value,
>> +                     (long unsigned int)obj->Package.Elements[1].Integer.Value);
>>               fwts_tag_failed(fw, FWTS_TAG_ACPI_METHOD_RETURN);
>>               failed = true;
>>       }
>> @@ -4611,8 +4611,8 @@ static void method_test_BCL_return(
>>                               "than brightness level %" PRIu64
>>                               " (index %d" PRIu32 "), should "
>>                               "be in ascending order.",
>> -                             obj->Package.Elements[i].Integer.Value, i,
>> -                             obj->Package.Elements[i+1].Integer.Value, i+1);
>> +                             (long unsigned int)obj->Package.Elements[i].Integer.Value, i,
>> +                             (long unsigned int)obj->Package.Elements[i+1].Integer.Value, i+1);
>>                       ascending_levels = true;
>>                       failed = true;
>>               }
>> @@ -4629,14 +4629,14 @@ static void method_test_BCL_return(
>>       }
>>
>>       fwts_log_info(fw, "Brightness levels for %s:" ,name);
>> -     fwts_log_info_verbatum(fw, "  Level on full power   : %" PRIu64, obj->Package.Elements[0].Integer.Value);
>> -     fwts_log_info_verbatum(fw, "  Level on battery power: %" PRIu64, obj->Package.Elements[1].Integer.Value);
>> +     fwts_log_info_verbatum(fw, "  Level on full power   : %" PRIu64, (long unsigned int)obj->Package.Elements[0].Integer.Value);
>> +     fwts_log_info_verbatum(fw, "  Level on battery power: %" PRIu64, (long unsigned int)obj->Package.Elements[1].Integer.Value);
>>       for (i = 2; i < obj->Package.Count; i++) {
>>               char tmp[12];
>>
>>               snprintf(tmp, sizeof(tmp), "%s%" PRIu64,
>>                       i == 2 ? "" : ", ",
>> -                     obj->Package.Elements[i].Integer.Value);
>> +                     (long unsigned int)obj->Package.Elements[i].Integer.Value);
>>               str = fwts_realloc_strcat(str, tmp);
>>               if (!str)
>>                       break;
>>
>



More information about the fwts-devel mailing list