diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-01-02 01:23:44 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2011-01-02 01:23:44 +0000 |
commit | 4b8799280fe688cfe8221b2b95eaaaddb122d550 (patch) | |
tree | 6a5ee54ea14d8be4775c722e11cd9f4fa0c9b1eb /tools/missing-macros/src/m4 | |
parent | c208b4a1027efb6b445e33ed50de6b1bd2fe7f16 (diff) | |
download | upstream-4b8799280fe688cfe8221b2b95eaaaddb122d550.tar.gz upstream-4b8799280fe688cfe8221b2b95eaaaddb122d550.tar.bz2 upstream-4b8799280fe688cfe8221b2b95eaaaddb122d550.zip |
missing-macros: add as-unaligned-access.m4
SVN-Revision: 24878
Diffstat (limited to 'tools/missing-macros/src/m4')
-rw-r--r-- | tools/missing-macros/src/m4/as-unaligned-access.m4 | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tools/missing-macros/src/m4/as-unaligned-access.m4 b/tools/missing-macros/src/m4/as-unaligned-access.m4 new file mode 100644 index 0000000000..ede8bd2a95 --- /dev/null +++ b/tools/missing-macros/src/m4/as-unaligned-access.m4 @@ -0,0 +1,41 @@ +dnl AS_UNALIGNED_ACCESS + +dnl check if unaligned memory access works correctly +AC_DEFUN([AS_UNALIGNED_ACCESS], [ + AC_MSG_CHECKING([if unaligned memory access works correctly]) + if test x"$as_cv_unaligned_access" = x ; then + case $host in + alpha*|arm*|hp*|mips*|sh*|sparc*|ia64*) + _AS_ECHO_N([(blacklisted) ]) + as_cv_unaligned_access=no + ;; + i?86*|x86_64|amd64|powerpc*|m68k*|cris*) + _AS_ECHO_N([(whitelisted) ]) + as_cv_unaligned_access=yes + ;; + esac + else + _AS_ECHO_N([(cached) ]) + fi + if test x"$as_cv_unaligned_access" = x ; then + AC_TRY_RUN([ +int main(int argc, char **argv) +{ + char array[] = "ABCDEFGH"; + unsigned int iarray[2]; + memcpy(iarray,array,8); +#define GET(x) (*(unsigned int *)((char *)iarray + (x))) + if(GET(0) != 0x41424344 && GET(0) != 0x44434241) return 1; + if(GET(1) != 0x42434445 && GET(1) != 0x45444342) return 1; + if(GET(2) != 0x43444546 && GET(2) != 0x46454443) return 1; + if(GET(3) != 0x44454647 && GET(3) != 0x47464544) return 1; + return 0; +} + ], as_cv_unaligned_access="yes", as_cv_unaligned_access="no") + fi + AC_MSG_RESULT($as_cv_unaligned_access) + if test "$as_cv_unaligned_access" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_UNALIGNED_ACCESS, 1, + [defined if unaligned memory access works correctly]) + fi +]) |