From: leslie Date: Sat, 23 Jul 2011 15:04:48 +0000 (+0200) Subject: FFdecsa: some tweaks for ARM compile X-Git-Tag: upstream/620~59 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=2ff6eb5865bed20d6a69409fe9389419093dd704;p=sasc-ng.git FFdecsa: some tweaks for ARM compile --- diff --git a/FFdecsa/FFdecsa.c b/FFdecsa/FFdecsa.c index f272b05..5aa01a3 100644 --- a/FFdecsa/FFdecsa.c +++ b/FFdecsa/FFdecsa.c @@ -103,13 +103,27 @@ #define BITS_PER_GROUP GROUP_PARALLELISM #define BIPG BITS_PER_GROUP +// platform specific + +#ifdef __arm__ +#if !defined(MEMALIGN_VAL) || MEMALIGN_VAL<4 +#undef MEMALIGN_VAL +#define MEMALIGN_VAL 4 +#endif +#define COPY_UNALIGNED_PKT +#endif + +// + #ifndef MALLOC #define MALLOC(X) malloc(X) #endif #ifndef FREE #define FREE(X) free(X) #endif -#ifndef MEMALIGN +#ifdef MEMALIGN_VAL +#define MEMALIGN __attribute__((aligned(MEMALIGN_VAL))) +#else #define MEMALIGN #endif @@ -574,6 +588,10 @@ int decrypt_packets(void *keys, unsigned char **cluster){ MEMALIGN unsigned char stream_out[GROUP_PARALLELISM*8]; MEMALIGN unsigned char ib[GROUP_PARALLELISM*8]; MEMALIGN unsigned char block_out[GROUP_PARALLELISM*8]; +#ifdef COPY_UNALIGNED_PKT + unsigned char *unaligned[GROUP_PARALLELISM]; + MEMALIGN unsigned char alignedBuff[GROUP_PARALLELISM][188]; +#endif struct stream_regs regs; //icc craziness i=(int)&pad1;//////////align!!! FIXME @@ -799,6 +817,14 @@ DBG(fprintf(stderr,"--- WARNING: DEBUGGING IS MORE DIFFICULT WHEN PROCESSING RAN encp[g]=g_pkt[g]; DBG(fprintf(stderr,"header[%i]=%p (%02x)\n",g,encp[g],*(encp[g]))); encp[g]+=g_offset[g]; // skip header +#ifdef COPY_UNALIGNED_PKT + if(((int)encp[g])&0x03) { + memcpy(alignedBuff[g],encp[g],g_len[g]); + unaligned[g]=encp[g]; + encp[g]=alignedBuff[g]; + } + else unaligned[g]=0; +#endif FFTABLEIN(stream_in,g,encp[g]); } //dump_mem("stream_in",stream_in,GROUP_PARALLELISM*8,BYPG); @@ -874,6 +900,11 @@ DBG(dump_mem("23jd_after_ib_decrypt_data ",encp[g],8,8)); DBG(fprintf(stderr,"returning advanced=%i\n",advanced)); +#ifdef COPY_UNALIGNED_PKT + for(g=0;g -#define MEMALIGN __attribute__((aligned(16))) +#define MEMALIGN_VAL 16 union __u64 { unsigned int u[2]; diff --git a/FFdecsa/parallel_128_2mmx.h b/FFdecsa/parallel_128_2mmx.h index 4afb7a7..4e6d1bf 100644 --- a/FFdecsa/parallel_128_2mmx.h +++ b/FFdecsa/parallel_128_2mmx.h @@ -20,7 +20,7 @@ #include -#define MEMALIGN __attribute__((aligned(16))) +#define MEMALIGN_VAL 16 struct group_t{ __m64 s1,s2; diff --git a/FFdecsa/parallel_128_sse.h b/FFdecsa/parallel_128_sse.h index a26e6b3..0544902 100644 --- a/FFdecsa/parallel_128_sse.h +++ b/FFdecsa/parallel_128_sse.h @@ -21,7 +21,7 @@ #include -#define MEMALIGN __attribute__((aligned(16))) +#define MEMALIGN_VAL 16 union __u128 { unsigned int u[4]; diff --git a/FFdecsa/parallel_128_sse2.h b/FFdecsa/parallel_128_sse2.h index 5a537a9..a834a80 100644 --- a/FFdecsa/parallel_128_sse2.h +++ b/FFdecsa/parallel_128_sse2.h @@ -20,7 +20,7 @@ #include -#define MEMALIGN __attribute__((aligned(16))) +#define MEMALIGN_VAL 16 union __u128i { unsigned int u[4];