|
|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup.
1 W; I$ w( V9 s- Z5 c1 H我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。
# A) W- Z' E- Z5 V1 n8 \* V: ]代码如下:/ z$ l0 T2 D# ^! N" s2 `/ J
VOID CheckForKey( EFI_EVENT Event, VOID *Context )
! ]7 u- W) d8 D m+ I7 w( X- W{
7 n* z) w8 Y9 e: P; g9 h4 ]" n$ x. _) Z2 o; ~# w
……….. 7 j5 }2 y/ ~4 Q
UINT8 Data,Data1;
; Y8 [' R# V; z+ h
" U5 p# b# Y) A7 I- V/ H9 o Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo);
5 \4 K; p2 }& l1 b( f% ^3 C if (EFI_ERROR(Status)) return;
6 K1 T# t$ F& K Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type
: j: {: ^. ?/ p& }9 X if((Data == 0x18)){
/ h# D6 J j) { P, b return;}) `1 C' H- @3 E. w: Q% ~0 o
……….…….9 S6 ]( n! h( b- E, N" w
}
' x' Y4 v( J: W' b$ q6 E可是仍然从S4回来可以进入bios setup.* q( \. m5 U" O2 S- a9 W& i: S& C
我想问1。PMBASE是不是在S4回来后被清空?
/ ?& P i( p- C/ g 2.是何时被清空的?
, _. i6 E$ ~" U/ ~- n谢谢 |
|