|
|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup.
" v( T! ]( }3 u4 A我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。4 _- w! J4 r5 k1 A- q
代码如下:
$ Q7 s! v: k0 K! IVOID CheckForKey( EFI_EVENT Event, VOID *Context )
& ]3 m- m; X& W{* b6 D7 {/ f/ D$ t* b5 y+ q2 f+ r
# D8 _# q# N; Y……….. * }& L, Z) x; e* W' C
UINT8 Data,Data1;6 z& `) g5 p. ]% J# q" e' l
2 `1 p7 p/ l1 W, y Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo);
, _2 ~# O/ ~: M, Q G$ y d; E if (EFI_ERROR(Status)) return;; L5 f8 w+ p4 s' D! e
Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type9 L o, N8 [( m) C+ Q# v, h+ f7 x
if((Data == 0x18)){
* c" I3 z2 g7 C5 W0 g. ?3 g+ b0 V return;}
& T4 Z! l( I5 | I: V# W……….…….
9 n4 Y6 e! w/ M+ _}
1 A3 u% l5 V/ T0 V! T' T$ K可是仍然从S4回来可以进入bios setup.
6 W" p; e" z5 z$ |' z9 t5 l我想问1。PMBASE是不是在S4回来后被清空?
, A, V; ?9 m' w5 |+ ]- k+ k3 [ 2.是何时被清空的?
2 u5 a5 _2 q+ A& C1 Y: \谢谢 |
|