From owner-acpi-jp@jp.freebsd.org  Wed May 24 23:04:33 2000
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id XAA74635;
	Wed, 24 May 2000 23:04:33 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from tasogare.imasy.or.jp (daemon@tasogare.imasy.or.jp [202.227.24.5])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id XAA74630
	for <acpi-jp@jp.freebsd.org>; Wed, 24 May 2000 23:04:32 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Received: from localhost (isdn49.imasy.or.jp [202.227.24.241])
	by tasogare.imasy.or.jp (8.9.3+3.2W/3.7W-tasogare/smtpfeed 1.04) with ESMTP id XAA68804;
	Wed, 24 May 2000 23:04:29 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
To: acpi-jp@jp.freebsd.org, takawata@shidahara1.planet.sci.kobe-u.ac.jp
In-Reply-To: <200005241255.VAA49196@shidahara1.planet.sci.kobe-u.ac.jp>
References: <200005240906.SAA48299@shidahara1.planet.sci.kobe-u.ac.jp>
	<200005241255.VAA49196@shidahara1.planet.sci.kobe-u.ac.jp>
	<20000524132555A.yokoyama@o3.otc.ogis-ri.co.jp>
X-Mailer: Mew version 1.94.1 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <20000524230427R.iwasaki@jp.FreeBSD.org>
Date: Wed, 24 May 2000 23:04:27 +0900
From: Mitsuru IWASAKI <iwasaki@jp.freebsd.org>
X-Dispatcher: imput version 20000228(IM140)
Lines: 121
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+000315
X-Sequence: acpi-jp 316
Subject: [acpi-jp 316] Re: bugs...
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: iwasaki@jp.freebsd.org

$B$$$o$5$-$G$9(B
# $B$d$C$H;~4V$,<h$l$?(B...

> >	Else{
> >		Return(BAZO)
> >	}
> >}
> >$B$J$s$F$J$C$F$?$i!"(BLocal0$B$C$F0UL#$,$J$/$J$C$F$k$h$&$J(B.....
> >$B!t<BAu$9$kA0$K8@$($h(B....$B!d&R(B(^_^)
> 
> $B$"$"!"NI$/$_$?$i$b$7Aj<j$,(Bbuffer$B$J$i(Bstore$B$N;~E@$G(B
> $BFI$_$@$7$A$c$&$s$G$9$M!#(BNULL$B$@$C$?$+$i(Bobject$B$r(B
> $B$=$N$^$^%3%T!<$7$h$&$H$7$?$o$1$G!#(B
> $B$h$C$F!"$3$s$J46$8$GF0$-$^$7$?!#(B

$B$=$&$$$&$3$H$@$H;W$$$^$9!#$G$b!"(B

> @@ -282,9 +287,17 @@
>  		return;
>  	}
>  	if(name->property==NULL){
> -		name->property=acpi_copy_object(env,obj);
> -		DPRINT("[Copy number 0x%x]", obj->num.number);
> -		return;
> +	        if(obj->type==aml_t_regfield){
> +		       name->property = acpi_alloc_object(aml_t_buffer,NULL);
> +		       name->property->buffer.size = obj->regfield.bitlen/8;
> +		       name->property->buffer.data = 
> +			 memman_alloc_flexsize(aml_memman,obj->regfield.bitlen/8);
> +		       *name->property->buffer.data='\0';
> +		}else{
> +		       name->property=acpi_copy_object(env,obj);
> +		       DPRINT("[Copy number 0x%x]", obj->num.number);
> +		       return;
> +		}

$B$3$3$O$`$7$m!"(Bacpi_copy_object() $B$NCf$G$d$C$?J}$,$$$$$G$9!#(B
$B$D$^$j(B Return(DATA) $B$H$+$"$C$?>l9g!"(Bregfield object $B$,$=$N$^$^(B
$BJV$C$F$7$^$C$?$i$^$:$$$N$G!#(B
# ReturnOp $B$NCf$G(B acpi_copy_object() $B$r;HMQ$7$F%3%T!<$7$?$b$N$rJV$7$F$$$^$9(B
$BF1$8$h$&$JM}M3$G!"(B

yokoyama>                 if (tmpobj->type == aml_t_regfield) {
yokoyama>                         tmpobj->type=aml_t_null;
yokoyama>                         acpi_free_object(&tmpobj);
yokoyama>                         aname->property = tmpobj = acpi_copy_object(env,
yokoyama>                             distname1->property);
yokoyama>                 }
yokoyama>  
yokoyama> $B$J$3$H$r$7$F$$$k$N$,860x$G$7$g$&!#(B

$B$3$3$N=hM}$OI,MW$J$s$G$9!#(B

$B$H$$$&$o$1$G!":#$^$G$N%Q%C%A$r$\$/$J$j$K@0M}$7$?$b$N$G$9!#(B

Index: evalobj.c
===================================================================
RCS file: /home/cvs/ACPI/util/acpiconf/evalobj.c,v
retrieving revision 1.11
diff -u -r1.11 evalobj.c
--- evalobj.c	2000/05/21 15:51:05	1.11
+++ evalobj.c	2000/05/24 13:54:14
@@ -63,7 +63,7 @@
 	}
 	field=&name->property->field;
 	oname=env->curname;
-	if(field->bitlen>=32){
+	if(field->bitlen > 32){
 		env->wobj.type=aml_t_regfield;
 	}else{
 		env->wobj.type=aml_t_num;
Index: obj.c
===================================================================
RCS file: /home/cvs/ACPI/util/acpiconf/obj.c,v
retrieving revision 1.7
diff -u -r1.7 obj.c
--- obj.c	2000/05/21 15:51:05	1.7
+++ obj.c	2000/05/24 14:01:24
@@ -49,7 +49,20 @@
 	int i;
 	if(orig==NULL)
 		return NULL;
-	ret=acpi_alloc_object(0,orig);
+	switch (orig->type) {
+	case aml_t_regfield:
+		ret = acpi_alloc_object(aml_t_buffer, 0);
+		ret->buffer.size = (orig->regfield.bitlen / 8) +
+				   ((orig->regfield.bitlen % 8) ? 1 : 0);
+		ret->buffer.data = memman_alloc_flexsize(aml_memman, ret->buffer.size);
+		acpi_store_to_object(env, orig, ret);
+		break;
+
+	default:
+		ret = acpi_alloc_object(0,orig);
+		break;
+	}
+
 	if(1 || orig!=&env->wobj) { /* XXX */
 		if (orig->type == aml_t_buffer) {
 			ret->buffer.data = memman_alloc_flexsize(aml_memman,
@@ -65,8 +78,6 @@
 			ret->str.string = memman_alloc_flexsize(aml_memman,
 			    strlen(orig->str.string) + 1);
 			strcpy(orig->str.string, ret->str.string);	
-		} else if (orig->type == aml_t_regfield) {
- 			*ret = env->wobj;
 		}
 	}else{
 		printf ("%s:%d \n", __FILE__, __LINE__);
Index: store.h
===================================================================
RCS file: /home/cvs/ACPI/util/acpiconf/store.h,v
retrieving revision 1.2
diff -u -r1.2 store.h
--- store.h	2000/03/21 19:30:11	1.2
+++ store.h	2000/05/24 13:58:27
@@ -27,3 +27,4 @@
  */
 void 
 acpi_store_to_name(struct aml_environ *,union aml_object *,struct aml_name *);
+void	acpi_store_to_object(struct aml_environ *, union aml_object *, union aml_object *);
