|
|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup.8 J% M, N0 Q! i4 [$ ?$ d
我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。# V( }* p5 }; ]* {+ b
代码如下:5 Z! N1 H0 |! i, l; Y% w& ~8 {
VOID CheckForKey( EFI_EVENT Event, VOID *Context )! Z3 A6 r8 m3 f$ ~6 Y
{* }, f/ e1 t B4 A. \
- c: g6 i S5 G5 Q" J* X' r: b………..
. z' R# `# Z3 j+ ?+ u! \ UINT8 Data,Data1;6 F& g7 \% u; [7 u6 L
3 W8 {; C/ E8 h1 d4 q Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo);. t- Z7 R( }" N S3 X
if (EFI_ERROR(Status)) return;- d s% y% u: e$ `* G+ s9 U2 O- p
Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type
5 i+ A- p1 `# M' T if((Data == 0x18)){6 }! P. J5 a; ^3 G
return;}3 e2 j3 Z' I5 g* g H! |% {: e/ ~
……….…….- T2 c3 V1 c* ?5 Y. _7 F6 J
}
; }. U. `8 I. m |; U+ t3 s u可是仍然从S4回来可以进入bios setup.
_( r8 u2 O" G5 K4 @( U我想问1。PMBASE是不是在S4回来后被清空?" d5 J; ?, c% W5 ]* H
2.是何时被清空的?& t6 T" r8 [5 X$ ^
谢谢 |
|