--- liboil-0.3.16/liboil/powerpc/resample.c 2007-11-16 03:53:47.000000000 +0100 +++ liboil-0.3.16.fix/liboil/powerpc/resample.c 2009-05-03 02:05:31.000000000 +0200 @@ -86,7 +86,8 @@ " vpkuhus v0, v0, v0\n" " stvx v0, 0, %0\n" : - : "b" (atmp)); + : "b" (atmp) + : "r11" ); dest[i] = atmp[0]; if (i+1>= 2; + p = (*param<<24) | (*param<<16) | (*param<<8) | (*param); - while(n>0){ - *(uint32_t *)dest = p; - dest+=4; - n--; + + dest32 = (void *)dest; + dest32[0] = p; /* may be unaligned */ + + /* align */ + dest32 += 1; + dest32 = (void *)( ((uintptr_t)dest32) & (~3) ); + diff = (void *)dest32 - (void *)dest; + + n -= diff; + diff = n & 3; + n >>= 2; + /* aligned copy */ + for( i=0; i