mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-20 06:08:08 +00:00
missing-macros: add as-unaligned-access.m4
SVN-Revision: 24878
This commit is contained in:
parent
c208b4a102
commit
4b8799280f
@ -8,7 +8,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=missing-macros
|
PKG_NAME:=missing-macros
|
||||||
PKG_VERSION:=8
|
PKG_VERSION:=9
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/host-build.mk
|
include $(INCLUDE_DIR)/host-build.mk
|
||||||
|
|
||||||
|
@ -79,6 +79,12 @@ Autostars m4 macro for versioning.
|
|||||||
as-version.m4
|
as-version.m4
|
||||||
|
|
||||||
|
|
||||||
|
From liboil:
|
||||||
|
Check if unaligned memory access works correctly.
|
||||||
|
|
||||||
|
as-unaligned-access.m4
|
||||||
|
|
||||||
|
|
||||||
From OpenWrt:
|
From OpenWrt:
|
||||||
Always disable GTK docs.
|
Always disable GTK docs.
|
||||||
|
|
||||||
|
41
tools/missing-macros/src/m4/as-unaligned-access.m4
Normal file
41
tools/missing-macros/src/m4/as-unaligned-access.m4
Normal file
@ -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
|
||||||
|
])
|
Loading…
Reference in New Issue
Block a user