|
|
大家好,我在接案子的时候遇到个bebug :从S4回来可以进入bios setup.
3 A! g0 w* T l, s我的解法是这样的,在POST的过程中系统检测按键的时候,我加了段代码去判断PM_BASE+04h的BIT10 – bit12是否等于110b。
4 W' Z! G: X+ Q2 T3 [代码如下:
! R' N( n7 ]; N& U1 Y9 NVOID CheckForKey( EFI_EVENT Event, VOID *Context )" a% y* q' R" _ f
{1 C+ s9 X3 I, n8 h- g( F1 }9 ]# z
4 l" o; `$ O3 ^. f! X………..
2 G1 R9 r3 F: p3 h8 \7 D" G UINT8 Data,Data1;
4 N" D! x9 p/ p' Q$ ?
3 h+ r5 p2 a& C; v4 f; |% y Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, &gCpuIo);0 j: r r7 j/ L1 \- z
if (EFI_ERROR(Status)) return;0 O' A0 _4 K: x7 Z. V
Status=gCpuIo->Io.Read (gCpuIo, EfiCpuIoWidthUint8, 0x405 , 1, &Data); //read PM BASE register 0x05,Get sleep type3 a! Z7 G* J! D& ]9 u0 X2 s7 Y6 h& S
if((Data == 0x18)){, k7 n9 |9 u* w& a4 X5 c; d
return;}: \" L8 w6 L }) |# q0 k0 y z
……….…….4 g+ K5 Z7 x- ?0 M, I. u* d6 ^
}
% q# |2 Q) E# J: y可是仍然从S4回来可以进入bios setup.
% Y: |" v- l* g: b% `& z我想问1。PMBASE是不是在S4回来后被清空?
z3 g6 g# i6 x/ y# I8 G" v 2.是何时被清空的?3 |# [# b& M8 X; t8 U1 N6 @, N+ k/ L
谢谢 |
|