|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup.
' t$ @; B9 x& x我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。
* O, Z" \. `3 S* z代码如下:
~/ {3 ?# n) X9 C% uVOID CheckForKey( EFI_EVENT Event, VOID *Context )
+ @- Q* e+ J$ {$ B{# J7 i1 m4 }# R# H
3 ] v" i1 K" d6 ~( o/ O: }+ c………..
z1 O l) X7 \1 E! m UINT8 Data,Data1;4 J; n2 \0 X) Q' ~% B
$ z5 P( n! U4 m; a, l Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo);( Y- i" _: Y; `4 f6 d8 f
if (EFI_ERROR(Status)) return;
, L8 g( K5 I* Q, f4 r Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type
0 D9 N7 P; Q% A9 C/ i7 M! f* C if((Data == 0x18)){
* s; w3 B$ N) O( P v, K/ U2 J return;}7 m9 s$ b/ d8 |( c/ h* @! q3 I
……….…….
: V6 c$ v' Q0 N- I; x7 v4 L7 S}: h+ _3 u3 ?" D8 p4 ^+ p
可是仍然从S4回来可以进入bios setup.8 X0 ~5 s: o. w/ r( c
我想问1。PMBASE是不是在S4回来后被清空?4 U { N4 t( }% J3 K. Y6 Y
2.是何时被清空的?
% W) _: N2 e& U: g; @, [谢谢 |
|