From owner-acpi-jp@jp.freebsd.org  Wed Jan  3 11:38:55 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id LAA47081;
	Wed, 3 Jan 2001 11:38:55 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from mobile.wemm.org (c1315225-a.plstn1.sfba.home.com [65.0.135.147])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id LAA47076
	for <acpi-jp@jp.freebsd.org>; Wed, 3 Jan 2001 11:38:53 +0900 (JST)
	(envelope-from peter@netplex.com.au)
Received: from netplex.com.au (localhost [127.0.0.1])
	by mobile.wemm.org (8.11.1/8.11.1) with ESMTP id f032dB813872;
	Tue, 2 Jan 2001 18:39:11 -0800 (PST)
	(envelope-from peter@netplex.com.au)
Message-Id: <200101030239.f032dB813872@mobile.wemm.org>
X-Mailer: exmh version 2.2 06/23/2000 with nmh-1.0.4
To: "Adam J. Richter" <adam@yggdrasil.com>
cc: takawata@shidahara1.planet.sci.kobe-u.ac.jp, msmith@freebsd.org,
        acpi-jp@jp.freebsd.org, fudge_factor@hotmail.com,
        acme@conectiva.com.br, acpi@phobos.fachschaften.tu-muenchen.de
In-Reply-To: <20010102021341.A3451@baldur.yggdrasil.com> 
Date: Tue, 02 Jan 2001 18:39:11 -0800
From: Peter Wemm <peter@netplex.com.au>
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+000315
X-Sequence: acpi-jp 1018
Subject: [acpi-jp 1018] Re: Patch(?): Peter Wemm's Sony Vaio ACPI fix simplified and adapted to linux-2.4.0-prerelease 
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: peter@netplex.com.au

"Adam J. Richter" wrote:

There is a problem here...

> +
> +		if (((1UL << bit_granularity)-1) & ~mask) {
> +			status = acpi_aml_read_field_data (obj_desc,
> +				   this_field_byte_offset,

bit_granulatity is sometimes 32, for which we need the mask to be
0xffffffff.

peter@mobile[6:35pm]/tmp-285> cat x.c
main()
{
        int gran;
        for (gran = 28; gran <= 32; gran++) {
                printf("gran = %d; ", gran);
                printf("(1 << gran) - 1 = 0x%08x\n", (1UL << gran) - 1);
        }
}
peter@mobile[6:36pm]/tmp-286> cc -o x x.c
peter@mobile[6:36pm]/tmp-287> ./x
gran = 28; (1 << gran) - 1 = 0x0fffffff
gran = 29; (1 << gran) - 1 = 0x1fffffff
gran = 30; (1 << gran) - 1 = 0x3fffffff
gran = 31; (1 << gran) - 1 = 0x7fffffff
gran = 32; (1 << gran) - 1 = 0x00000000
peter@mobile[6:36pm]/tmp-288> cc -v
Using builtin specs.
gcc version 2.95.2 19991024 (release)

Note that << 32 for a 32 bit type is essentially undefined.  It is too late
to subtract 1 in "(1UL << bit_granularity) - 1".

Cheers,
-Peter
--
Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au
"All of this is for nothing if we don't go to the stars" - JMS/B5

