diff options
author | Philip Gladstone <philipjsg@users.sourceforge.net> | 2002-11-26 04:29:40 +0000 |
---|---|---|
committer | Philip Gladstone <philipjsg@users.sourceforge.net> | 2002-11-26 04:29:40 +0000 |
commit | 35fedfc349b04e53e77044a3c0ac3027401f4863 (patch) | |
tree | 49cdfe3c5b4bea28171d6d5402e2a8e07b069726 | |
parent | b55e4ef43d7aed14716e3eaa42f0709f486e0d78 (diff) | |
download | ffmpeg-35fedfc349b04e53e77044a3c0ac3027401f4863.tar.gz |
Add some rudimentary support for sparc64
Originally committed as revision 1279 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rwxr-xr-x | configure | 3 | ||||
-rw-r--r-- | libavcodec/common.h | 12 |
2 files changed, 15 insertions, 0 deletions
@@ -485,6 +485,9 @@ elif test "$cpu" = "armv4l" ; then elif test "$cpu" = "alpha" ; then echo "TARGET_ARCH_ALPHA=yes" >> config.mak echo "#define ARCH_ALPHA 1" >> $TMPH +elif test "$cpu" = "sparc64" ; then + echo "TARGET_ARCH_SPARC64=yes" >> config.mak + echo "#define ARCH_SPARC64 1" >> $TMPH elif test "$cpu" = "powerpc" ; then echo "TARGET_ARCH_POWERPC=yes" >> config.mak echo "#define ARCH_POWERPC 1" >> $TMPH diff --git a/libavcodec/common.h b/libavcodec/common.h index b657aba7ba..966f1cd6af 100644 --- a/libavcodec/common.h +++ b/libavcodec/common.h @@ -248,6 +248,10 @@ typedef struct RL_VLC_ELEM { uint8_t run; } RL_VLC_ELEM; +#ifdef ARCH_SPARC64 +#define UNALIGNED_STORES_ARE_BAD +#endif + /* used to avoid missaligned exceptions on some archs (alpha, ...) */ #ifdef ARCH_X86 # define unaligned32(a) (*(UINT32*)(a)) @@ -294,6 +298,14 @@ static inline void put_bits(PutBitContext *s, int n, unsigned int value) } else { bit_buf<<=bit_left; bit_buf |= value >> (n - bit_left); +#ifdef UNALIGNED_STORES_ARE_BAD + if (3 & (int) s->buf_ptr) { + s->buf_ptr[0] = bit_buf >> 24; + s->buf_ptr[1] = bit_buf >> 16; + s->buf_ptr[2] = bit_buf >> 8; + s->buf_ptr[3] = bit_buf ; + } else +#endif *(UINT32 *)s->buf_ptr = be2me_32(bit_buf); //printf("bitbuf = %08x\n", bit_buf); s->buf_ptr+=4; |