On 03/04/13 19:28, Jordan Justen wrote:
> When the PM base address was moved from 0x400 to 0xb000, this
> code was missed. This prevented shutdown's via the UEFI system
> call from working.
> 
> (For example, at the EFI shell prompt: reset -s)
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Jordan Justen <[email protected]>
> ---
>  OvmfPkg/Library/ResetSystemLib/ResetSystemLib.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/OvmfPkg/Library/ResetSystemLib/ResetSystemLib.c 
> b/OvmfPkg/Library/ResetSystemLib/ResetSystemLib.c
> index d075fbe..89a2644 100644
> --- a/OvmfPkg/Library/ResetSystemLib/ResetSystemLib.c
> +++ b/OvmfPkg/Library/ResetSystemLib/ResetSystemLib.c
> @@ -26,8 +26,8 @@ AcpiPmControl (
>  {
>    ASSERT (SuspendType < 6);
>  
> -  IoAndThenOr16 (0x404, (UINT16) ~0x3c00, (UINT16) (SuspendType << 10));
> -  IoOr16 (0x404, BIT13);
> +  IoAndThenOr16 (0xb004, (UINT16) ~0x3c00, (UINT16) (SuspendType << 10));
> +  IoOr16 (0xb004, BIT13);
>    CpuDeadLoop ();
>  }
>  
> 

Could you use (PcdGet16 (PcdAcpiPmBaseAddress) + 4) instead? (Added in
svn r13719.)

(

Also (independently), 0x3c00 is an "int" (INT32), and bitwise complement
on signed integers is not the most beautiful thing in the universe. What
happens now is:

- ~0x3c00 has type "signed int",
- representation is bit pattern 11111111 11111111 11000011 11111111,
- value is -15361 decimal (two's complement on our platform --
implementation-defined),
- when casting it to "short unsigned" (UINT16), we get
  USHRT_MAX + 1 + (-15361) == 65536 - 15361 == 0xC3FF

I think ((UINT16) ~0x3c00u) would be cleaner (without the detour into
negative), but that's just an idea.

)

Thanks,
Laszlo

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to