From 651f58e57a94ecb010eb1a4c9dbeb752a7d0430b Mon Sep 17 00:00:00 2001 From: sparky Date: Sun, 3 May 2009 01:53:37 +0000 Subject: [PATCH] - so much unaligned write access doesn't seem like a good idea Changed files: liboil-fixes.patch -> 1.5 --- liboil-fixes.patch | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/liboil-fixes.patch b/liboil-fixes.patch index 63f2578..6192331 100644 --- a/liboil-fixes.patch +++ b/liboil-fixes.patch @@ -10,3 +10,56 @@ 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