qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 1/2] ARM: exynos4210: CMU support


From: Dunrong Huang
Subject: Re: [Qemu-devel] [PATCH v3 1/2] ARM: exynos4210: CMU support
Date: Wed, 4 Jul 2012 22:14:54 +0800

>
>>> +
>>> +static void exynos4210_cmu_set_pll(void *opaque, Exynos4210ClockState
>>> *pll)
>>> +{
>>> +    Exynos4210CmuState *s = opaque;
>>> +    Exynos4210ClockState *source;
>>> +    target_phys_addr_t offset = pll->div_reg;
>>> +    ClockChangeEntry *cce;
>>> +    uint32_t pdiv, mdiv, sdiv, enable;
>>> +
>>> +    source = exynos4210_clock_find(pll->src_id);
>>> +
>>> +    if (source == NULL) {
>>> +        hw_error("We haven't find source clock %d (requested for %s)\n",
>>> +                 pll->src_id, pll->name);
>>> +    }
>>> +
>>> +    /*
>>> +     * FOUT = MDIV * FIN / (PDIV * 2^(SDIV-1))
>>> +     */
>>> +
>>> +    enable = (s->reg[I_(offset)]&  PLL_ENABLE_MASK)>>  PLL_ENABLE_SHIFT;
>>> +    mdiv   = (s->reg[I_(offset)]&  PLL_MDIV_MASK)>>  PLL_MDIV_SHIFT;
>>> +    pdiv   = (s->reg[I_(offset)]&  PLL_PDIV_MASK)>>  PLL_PDIV_SHIFT;
>>> +    sdiv   = (s->reg[I_(offset)]&  PLL_SDIV_MASK)>>  PLL_SDIV_SHIFT;
>>> +
>>> +    if (source) {
>>> +        if (enable) {
>>> +            pll->rate = mdiv * source->rate / (pdiv * (1<<  (sdiv-1)));
>>> +        } else {
>>> +            pll->rate = 0;
>>> +        }
>>> +    } else {
>>> +        hw_error("%s: Source undefined for %s\n", __func__, pll->name);
>>> +    }
>>> +
>>> +    QTAILQ_FOREACH(cce,&pll->clock_change_handler, entry) {
>>>
>>> +        cce->func(cce->opaque);
>>> +    }
>>> +
>>> +    PRINT_DEBUG("%s rate: %llu\n", pll->name, pll->rate);
>>
>> pll->rate is of type uint64_t incompatible with "%llu"
>
>
> Type uint64_t is included from /usr/include/stdint.h as
>
> typedef unsigned long long int  uint64_t;
>From  /usr/include/stdint.h ,the uint64_t is defined by:
#if __WORDSIZE == 64
typedef unsigned long int       uint64_t;
#else
__extension__
typedef unsigned long long int  uint64_t;
#endif
On my machine(64 bit), there will be a incompatibility error.

As Peter said, you should use PRIu64 instead of llu
>
> and 'll' specifies that a following 'u' conversion specifier applies to a
> unsigned long long argument
>
> Why do you think they incompatible?
>
>
> --
> MK



-- 
Best Regards,

Dunrong Huang



reply via email to

[Prev in Thread] Current Thread [Next in Thread]