Revision 67fc07d3 host-utils.c

b/host-utils.c
43 43
    ph = (a >> 32) * (b >> 32);
44 44

  
45 45
    ph += (int64_t)pm1 >> 32;
46
    pm1 = (uint64_t)((uint32_t)pm1) + pm2 + (pl >> 32);
46
    ph += (int64_t)pm2 >> 32;
47
    pm1 = (uint64_t)((uint32_t)pm1) + (uint64_t)((uint32_t)pm2) + (pl >> 32);
47 48

  
48 49
    *phigh = ph + ((int64_t)pm1 >> 32);
49 50
    *plow = (pm1 << 32) + (uint32_t)pl;
......
67 68
    ph = (a >> 32) * (b >> 32);
68 69

  
69 70
    ph += pm1 >> 32;
70
    pm1 = (uint64_t)((uint32_t)pm1) + pm2 + (pl >> 32);
71
    ph += pm2 >> 32;
72
    pm1 = (uint64_t)((uint32_t)pm1) + (uint64_t)((uint32_t)pm2) + (pl >> 32);
71 73

  
72 74
    *phigh = ph + (pm1 >> 32);
73 75
    *plow = (pm1 << 32) + (uint32_t)pl;

Also available in: Unified diff