|
|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup.
$ _$ _2 N3 i7 m" s# y我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。
/ F; b' h& L5 x1 X( d代码如下:: P* i, t+ c% _5 u! ~$ {4 r
VOID CheckForKey( EFI_EVENT Event, VOID *Context )
, m0 F* [ E, W& E1 H. [+ f{
' S. r5 Z2 g" w1 T6 _5 d4 R& P
. s3 [4 v+ ]; a6 z" c" R0 c9 C……….. " b( y5 g3 r/ X/ u& v+ B9 o- b
UINT8 Data,Data1;# J( z, I0 |3 v8 v( s$ C8 O% @/ Y
r* a! [8 \) a. b+ V4 P
Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo); O% X, n+ s& \9 ]; C
if (EFI_ERROR(Status)) return;
$ I T3 j) i" E6 @' N' J Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type
* Z7 I% b4 s; d if((Data == 0x18)){
' ]$ {9 o5 ^, m return;}
7 j: H& W; ]( ?& Z; |……….…….
( Q0 y) i/ X& d3 C- r' f7 P}2 \4 q0 J, _$ u
可是仍然从S4回来可以进入bios setup.
& w) m& _3 Z2 o% U) U3 h! a我想问1。PMBASE是不是在S4回来后被清空?3 `3 k) f6 {' B2 \& p4 c4 N
2.是何时被清空的?$ j- f! H U5 c4 d( O% M
谢谢 |
|