|
|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup.
3 i/ E1 \$ G& {* V' s2 p我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。
2 v2 T; ~* e, E* S6 d$ g+ o代码如下:: H! |1 o. g! C( x+ P
VOID CheckForKey( EFI_EVENT Event, VOID *Context )% ?. _! s S& o
{
O+ G! C( [# K* k( j: J( c+ |. C9 R5 b; y
………..
' q6 A; D. `! t: U UINT8 Data,Data1;
: r: U& {: ^! f/ Q# |' g) ]; U/ x. v" i( o0 e% I& ~4 S
Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo);
4 w1 b% W0 G' U: N" j9 R if (EFI_ERROR(Status)) return;
G5 z! e, O6 }& Y8 J5 o! P Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type% d( l6 I) g/ Y4 i! [, f! C; i
if((Data == 0x18)){8 e5 }5 K& T# {( ~
return;}
9 `( P; G8 r( p' B& F……….…….+ P1 t0 ^& }% L/ Q3 F1 E7 h
}
5 R# T2 R$ ^- r可是仍然从S4回来可以进入bios setup.
# _! P ~- D$ x$ m# p N1 d$ B2 w- H5 r我想问1。PMBASE是不是在S4回来后被清空?
$ p& v0 W; m5 e8 U% I8 d 2.是何时被清空的?
. E9 q& I+ D: _$ i0 e3 k" ?5 U谢谢 |
|