From b4a215bd94cf1508782e49b1a3f8c6b1f7effbb9 Mon Sep 17 00:00:00 2001 From: Saul Wold Date: Wed, 1 Jun 2011 17:50:22 -0700 Subject: gcc: Fix volatile access issue for ARM [YOCTO #1130] This patch brings in a patch from gcc for the following issue: http://gcc.gnu.org/ml/gcc-patches/2011-03/msg01477.html (From OE-Core rev: 347c30801b6f935a6aefa5578d723a8afcf52790) Signed-off-by: Saul Wold Signed-off-by: Richard Purdie --- .../gcc/gcc-4.6.0/volatile_access_backport.patch | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 meta/recipes-devtools/gcc/gcc-4.6.0/volatile_access_backport.patch (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/volatile_access_backport.patch') diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/volatile_access_backport.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/volatile_access_backport.patch new file mode 100644 index 0000000000..9c8681728d --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/volatile_access_backport.patch @@ -0,0 +1,28 @@ +Pulled from http://gcc.gnu.org/ml/gcc-patches/2011-03/msg01477.html + +Upstream-Status: Backport + +Signed-off-by: Saul Wold + + gcc/ + * expr.c (expand_expr_real_1): Only use BLKmode for volatile + accesses which are not naturally aligned. + +Index: gcc-4.6.0/gcc/expr.c +=================================================================== +--- gcc-4.6.0.orig/gcc/expr.c 2011-06-01 15:28:55.000000000 -0700 ++++ gcc-4.6.0/gcc/expr.c 2011-06-01 15:41:17.154848182 -0700 +@@ -9178,8 +9178,11 @@ + && modifier != EXPAND_CONST_ADDRESS + && modifier != EXPAND_INITIALIZER) + /* If the field is volatile, we always want an aligned +- access. */ +- || (volatilep && flag_strict_volatile_bitfields > 0) ++ access. Only do this if the access is not already naturally ++ aligned, otherwise "normal" (non-bitfield) volatile fields ++ become non-addressable. */ ++ || (volatilep && flag_strict_volatile_bitfields > 0 ++ && (bitpos % GET_MODE_ALIGNMENT (mode) != 0)) + /* If the field isn't aligned enough to fetch as a memref, + fetch it as a bit field. */ + || (mode1 != BLKmode -- cgit v1.2.3-54-g00ecf