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: Maksim Kozlov
Subject: Re: [Qemu-devel] [PATCH v3 1/2] ARM: exynos4210: CMU support
Date: Wed, 04 Jul 2012 18:53:29 +0400
User-agent: Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20120129 Thunderbird/10.0

04.07.2012 18:14, Dunrong Huang пишет:

+
+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.

Yes, I have understood now. I don't use neither 64 bit system nor compiler and have not ever faced with this problem. Thanks for remarks


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








reply via email to

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