From owner-freebsd-arch@FreeBSD.ORG Mon Jan 13 06:04:40 2014 Return-Path: Delivered-To: arch@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 69748D4A for ; Mon, 13 Jan 2014 06:04:40 +0000 (UTC) Received: from h2.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 46F7D1632 for ; Mon, 13 Jan 2014 06:04:36 +0000 (UTC) Received: from h2.funkthat.com (localhost [127.0.0.1]) by h2.funkthat.com (8.14.3/8.14.3) with ESMTP id s0D64ais021220 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sun, 12 Jan 2014 22:04:36 -0800 (PST) (envelope-from jmg@h2.funkthat.com) Received: (from jmg@localhost) by h2.funkthat.com (8.14.3/8.14.3/Submit) id s0D64aTA021219 for arch@FreeBSD.org; Sun, 12 Jan 2014 22:04:36 -0800 (PST) (envelope-from jmg) Date: Sun, 12 Jan 2014 22:04:36 -0800 From: John-Mark Gurney To: arch@FreeBSD.org Subject: casting td_retval to off_t... Message-ID: <20140113060436.GC2982@funkthat.com> Mail-Followup-To: arch@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.3i X-Operating-System: FreeBSD 7.2-RELEASE i386 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.2 (h2.funkthat.com [127.0.0.1]); Sun, 12 Jan 2014 22:04:36 -0800 (PST) X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 06:04:40 -0000 So, I've been working on bringing FreeBSD back up on an AVILA board and have run into an issue where we cast td_retval to an off_t to write back a value (see the end of kern/vfs_vnops.c). The issue is that td_retval is defined as: register_t td_retval[2]; and on arm register_t is an int32_t so in struct thread, it doesn't get aligned to an 8 byte boundary... Recently attilo added an int before td_retval that caused td_retval to be no longer be aligned to 8 bytes. What is the best way to fix this? One simple & quick fix was to add __aligned(sizeof(off_t)) to the td_retval, but if we really want to fix this cleanly (make it alias clean), we should change td_retval to be a union, and I guess have a define for td_retval to access it through the union, something like: union { register_t tdu_retval[2]; off_t tdu_off; } td_uretoff; #define td_retval td_uretoff.tdu_retval Comments? Thanks. -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."