From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4225 invoked by alias); 16 Nov 2011 15:10:12 -0000 Received: (qmail 4213 invoked by uid 22791); 16 Nov 2011 15:10:11 -0000 X-SWARE-Spam-Status: No, hits=-3.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-yw0-f47.google.com (HELO mail-yw0-f47.google.com) (209.85.213.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 16 Nov 2011 15:09:58 +0000 Received: by ywt2 with SMTP id 2so6681728ywt.20 for ; Wed, 16 Nov 2011 07:09:57 -0800 (PST) Received: by 10.50.180.193 with SMTP id dq1mr17865434igc.34.1321456197648; Wed, 16 Nov 2011 07:09:57 -0800 (PST) Received: by 10.50.180.193 with SMTP id dq1mr17865421igc.34.1321456197565; Wed, 16 Nov 2011 07:09:57 -0800 (PST) Received: from coign.google.com ([216.239.45.130]) by mx.google.com with ESMTPS id j1sm25060703igq.2.2011.11.16.07.09.55 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 16 Nov 2011 07:09:56 -0800 (PST) From: Ian Lance Taylor To: Aurelien Buhrig Cc: gcc-help@gcc.gnu.org Subject: Re: Forcing memory mode to some addresses References: Date: Wed, 16 Nov 2011 18:29:00 -0000 In-Reply-To: (Aurelien Buhrig's message of "Wed, 16 Nov 2011 12:10:30 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org X-SW-Source: 2011-11/txt/msg00169.txt.bz2 Aurelien Buhrig writes: > I would like to force accesses to some memory variables in a specific mode. > For example, I would like GCC to access a 16-bit wide hardware > register always in HImode when using a 16bit wide bitfield struct... > Currently, GCC can accesses part of this memory structure using > QImode, which is not always permitted. > Is there a way to do it using an attribute ? Or perhaps another way ? > > If a target specific attribute must be defined, what should it > control, and how to recognized it in my backend ? You should always use a volatile qualified pointer when accessing a hardware register. When you do that, gcc should always use the appropriate mode. Ian