From owner-acpi-jp@jp.freebsd.org  Wed Jan  5 23:08:25 2000
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id XAA57965;
	Wed, 5 Jan 2000 23:08:25 +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 XAA57960
	for <acpi-jp@jp.freebsd.org>; Wed, 5 Jan 2000 23:08:25 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Received: from localhost (isdn22.imasy.or.jp [202.227.24.214])
	by tasogare.imasy.or.jp (8.9.3+3.2W/3.7W-tasogare/smtpfeed 1.01) with ESMTP id XAA11229
	for <acpi-jp@jp.freebsd.org>; Wed, 5 Jan 2000 23:08:22 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Message-Id: <200001051408.XAA11229@tasogare.imasy.or.jp>
To: acpi-jp@jp.freebsd.org
In-Reply-To: Your message of "Wed, 05 Jan 2000 12:41:16 +0900"
	<200001050341.MAA20431@shidahara1.planet.sci.kobe-u.ac.jp>
References: <200001050341.MAA20431@shidahara1.planet.sci.kobe-u.ac.jp>
X-Mailer: Mew version 1.93 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Date: Wed, 05 Jan 2000 23:08:17 +0900
From: Mitsuru IWASAKI <iwasaki@jp.freebsd.org>
X-Dispatcher: imput version 980905(IM100)
Lines: 126
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: acpi-jp 215
Subject: [acpi-jp 215] Re: Strange VAIO Z505JX FACP (Re: Strange usage of
 Or opcode in VersaProNX.dsdt.dat) 
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: iwasaki@jp.freebsd.org

> >... $BJ*M}%a%b%j(B 0x0 $B$N%"%I%l%9$K(B jump $B$7$F$3$i$l$F$b:$$k$s$G$9$1$I(B (^^;
> 
> $B$(!)(BReal$B%b!<%I$N3d$j9~$_%Y%/%?%F!<%V%k$,DC:B$^$7$^$7$F$$$k$H(B
> $B;W$C$F$?$s$G$9$1$I!#$D!<$+!"$3$l$O(BOS$BB&$G?2$kA0$K@_Dj$7$J$1$j$c$J$s$J$$H&!#(B

$B$"!"?7$7$$%V!<%H%m!<%@$,%Y%/%?%F!<%V%k$r$$$8$C$F$k5$$,$7$F$?$s$G$9$,!"(B
$B5$$N$;$$$@$C$?$+$b$7$l$^$;$s!#(B
# $B<+A0$N(B reboot $B$H$+$G$-$k$h$&$K$J$C$F$?$N$G(B

3110CT $B$N>l9g$O(B dd if=/dev/mem count=1 | hexdump $B$N(B
0000000 cc86 f000 cc86 f000 e2c3 f000 cc86 f000
        ~~~~~~~~~
$B$3$3$r$$$8$k$s$G$9$M!#(B

> $B$C$F$R$g$C$H$7$F!"(BS4BIOS$B$N$H$-$O(BBIOS$B$G$3$l$r@_Dj$7$F?2$F$/$l$?$j$9$k$N$+$J!#(B
> $B$J$i3Z$+$bCN$l$J$$!#2DG=@-$O$"$j$^$9$M!#MW$O(BBIOS Request$B$G?2$k;~$O(BAPM BIOS
> $B$r4V@\E*$K$O;H$C$F$k$h$&$J$b$s$@$+$i!#(B

$B$^$5$K$=$l$r4|BT$7$F$$$?$s$G$9$,4E$+$C$?$h$&$G!"8+;v$KK=Av$7$F$/$l$^$7$?!#(B

$B$G!"EEOCD"$r%Q%i%Q%i$a$/$C$F$$$?$i(B 7.5.2 (P-160) $B$K!"$=$N$b$N%:%P%j$N(B
$BNc$rH/8+$7$^$7$?!#(B
# $B$C$F5$IU$/$N$,CY$$(B? (^^;
Intel syntax $B$J$N$G:#$H$J$C$F$OF,$,:.Mp$7$^$9$,!"(BSLP_EN $B$7$?8e$K(B
WAK_STS $B$r4F;k$9$k%k!<%W$,I,MW!"$J$I:#$N%G%P%I%i$N%3!<%I$r<jD>$7(B
$B$9$k$N$K;29M$K$J$j$^$9!#(B

$B$=$l$G!"$$$/$D$+$3$N%5%s%W%k$K5?Ld$,$"$k$N$G0zMQ$7$^$9!#(B
/*
	Intel Architecture SetSleepingState example
*/
	ULONG
	SetSystemSleeping (
		IN ULONG NewState
	)
	{
	PROCESSOR_CONTEXT Context;
	ULONG PowerSeqeunce;
	BOOLEAN FlushCaches;
	USHORT SlpTyp;

// Required environment: Executing on the system boot
// processor. All other processors stopped. Interrupts
// disabled. All Power Resources (and devices) are in
// corresponding device state to support NewState.

$B4X78$"$j$^$;$s$,!"3d$j9~$_6X;_$H$"$k$1$I!"$3$l$O?.$8$F$$$$$N$G$7$g$&$+(B?
APM $B$N>l9g$HF1MM!"(BThinkPad $B7O$J$I$GLdBj=P$=$&$J5$$,$7$^$9!#(B

	// Get h/w attributes for this system state
	FlushCaches = SleepType[NewState].FlushCache;
	SlpTyp = SleepType[NewState].SlpTyp & SLP_TYP_MASK;
	_asm {
	lea	eax, OsResumeContext
	push	eax			; Build real mode handler the resume
	push	offset sp50		; context, with eip = sp50

$B$3$N%3!<%I$O(B real mode $B$G<B9T$5$l$k$3$H$r4|BT$7$F$$$k(B?
$B$&$A$i$N>l9g$O(B protect mode $B$GLa$C$F$/$k$3$H$rA0Ds$K(B %cs:%eip $B$r(B
$B%9%?%C%/$K@Q$s$I$$$F!"(Bresume $B$N;E>e$2$O(B ljmp $B$G40A4I|5"$H$$$&46$8$G$7$g$&$+!#(B

	call	SaveProcessorState
	mov	eax, ResumeVector	; set firmware's resume vector
	mov	[eax], offset OsRealModeResumeCode

OsRealModeResumeCode $B$G$O(B BIOS $B$,(B real mode $B$GFM$C9~$s$G$/$k$+$i!"(B
CPU $B$N=i4|2=(B (protect mode $B$X$N0\9T!"(Bpaging $BM-8z2=$J$I(B) $B$r$d$C$F(B
$B@h$[$I%9%?%C%/$K@Q$s$G$*$$$?(B %cs:%eip $B$X(B ljmp$B!"$+$J(B?
# ResumeVector $B$OJ*M}%"%I%l%9$J$N$G!"$d$O$j(B real mode?
$B$"$H!"85$N%Y%/%?$NCM$rBTHr$7$F5/$-$?$H$-$KLa$9$N$,Ni57$@$H(B
$B;W$$$^$9$,!"5$$N$;$$(B?

	mov	edx, PM1a_STS		;Make sure wake status is clear
	mov	ax, WAK_STS		; (cleared by asserting the bit
	out	dx, ax			; in the status register)
	mov	edx, PM1b_STS		;
	out	dx, ax			;

$B$3$N$X$s$O:#$N%G%P%I%i$G$b$d$C$F$^$9$M!#(B

	and	eax, not SLP_TYP_MASK
	or	eax, SlpTyp		; set SLP_TYP
	or	ax, SLP_EN		; set SLP_EN
	cmp	FlushCaches, 0
	jz	short sp10		; If needed, ensure no dirty data in
	call	FlushProcessorCaches	; the caches while sleeping

$B$3$l$O$d$C$F$$$^$;$s!#(B

sp10:	mov	edx, PM1a_SLP_TYP	; get address for PM1a_SLP_TYP
	out	dx, ax			; start h/w sequencing
	mov	edx, PM1b_SLP_TYP	; get address for PM1b_SLP_TYP
	out	dx, ax			; start h/w sequencing

$B:#$N%G%P%I%i$G$O$3$N=V4V$K?2$F$/$l$k$b$s$@$H2>Dj$7$F$$$^$9$,!"(B

	mov	edx, PM1a_STS		; get address for PM1x_STS
	mov	ecx, PM1b_STS
sp20:	in	ax, dx			; wait for WAK status
	xchg	edx, ecx
	test	ax, WAK_STS
	jz	short sp20

PM1 status $B$rFI$_=P$7$F(B WAK_STS $B$r4F;k$9$k%k!<%W$,I,MW$_$?$$$G$9$M!#(B
$B$G!"%k!<%W$7$F$$$k4V$K>!<j$K?2$F$/$l$k!#(B
S1 $B$N>l9g$O$3$N%k!<%W$NCf$+$i%9%?!<%H!"(B
$B$=$l0J30$O(B resume vector $B$+$i%9%?!<%H$7$F(B OsRealModeResumeCode $B$r(B
$B<B9T$7$F!":G8e$K(B

sp50:

OsRealModeResumeCode $B$+$i$3$N0LCV$X(B ljmp $B$7$F$b$i$C$F40A4I|5"$G$9$+$M!#(B
}
	// Done..
	*ResumeVector = NULL;

# $B$C$F$3$l$O$R$I$$5$$,(B...

	return 0;
}

$B$J$s$H$J$/$d$k$Y$-$3$H$,8+$($F$-$?5$$,$7$F$k$N$G$9$,!"(B
$B$I$3$+4*0c$$$7$F$k$h$&$@$C$?$i%D%C%3%_$h$m$7$/$J$N$G$9!#(B
$B$^$?!"(BOS $B<+A0(B S4 $B$G$b!"I|5"$N:G8e$"$?$j$N=hM}$O$3$l$H;w$?46$8$K(B
$B$J$k$N$G$O$J$$$G$7$g$&$+(B?

