Reviewed-by: Ruiyu Ni <ruiyu...@intel.com>

> -----Original Message-----
> From: Fan, Jeff
> Sent: Thursday, June 25, 2015 3:59 PM
> To: edk2-devel@lists.sourceforge.net
> Cc: Ni, Ruiyu
> Subject: [Patch] SourceLevelDebugPkg/DebugAgent: Add typecast to fix sign
> extension
> 
> OffsetHigh is 16bit value and its type is UINT32 and defined in structure.
> If its high bit is 1, it will sign extension when do 16-bit left-shift
> operation. Need to typecast if after left-shift operation on GCC.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Jeff Fan <jeff....@intel.com>
> CC: Ruiyu Ni <ruiyu...@intel.com>
> ---
> 
> SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAgen
> tLib.c | 2 +-
>  .../Library/DebugAgent/SecPeiDebugAgent/SecPeiDebugAgentLib.c
> | 2 +-
> 
> SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgent/SmmDebugAg
> entLib.c | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git
> a/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAg
> entLib.c
> b/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAg
> entLib.c
> index f7fbb3c..35fb5e6 100644
> ---
> a/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAg
> entLib.c
> +++
> b/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAg
> entLib.c
> @@ -512,7 +512,7 @@ InitializeDebugAgent (
>        Ia32Idtr =  (IA32_DESCRIPTOR *) Context;
>        Ia32IdtEntry = (IA32_IDT_ENTRY *)(Ia32Idtr->Base);
>        MailboxLocation = (UINT64 *) (UINTN)
> (Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetLow +
> -
> (Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetHigh << 16));
> +                                  (UINT32)
> (Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetHigh << 16));
>        Mailbox = (DEBUG_AGENT_MAILBOX *)(UINTN)(*MailboxLocation);
>        VerifyMailboxChecksum (Mailbox);
>      }
> diff --git
> a/SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgent/SecPeiDeb
> ugAgentLib.c
> b/SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgent/SecPeiDeb
> ugAgentLib.c
> index e77ff72..fcc7a4b 100644
> ---
> a/SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgent/SecPeiDeb
> ugAgentLib.c
> +++
> b/SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgent/SecPeiDeb
> ugAgentLib.c
> @@ -579,7 +579,7 @@ InitializeDebugAgent (
>        Ia32Idtr =  (IA32_DESCRIPTOR *) Context;
>        Ia32IdtEntry = (IA32_IDT_ENTRY *)(Ia32Idtr->Base);
>        MailboxLocationPointer = (UINT64 *) (UINTN)
> (Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetLow +
> -
> (Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetHigh << 16));
> +                                         (UINT32)
> (Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetHigh << 16));
>        Mailbox = (DEBUG_AGENT_MAILBOX *)
> (UINTN)(*MailboxLocationPointer);
>        //
>        // Mailbox should valid and setup before executing thunk code
> diff --git
> a/SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgent/SmmDebug
> AgentLib.c
> b/SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgent/SmmDebug
> AgentLib.c
> index 6ac5f88..3a759f9 100644
> ---
> a/SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgent/SmmDebug
> AgentLib.c
> +++
> b/SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgent/SmmDebug
> AgentLib.c
> @@ -328,7 +328,7 @@ InitializeDebugAgent (
>        Ia32Idtr =  (IA32_DESCRIPTOR *) Context;
>        Ia32IdtEntry = (IA32_IDT_ENTRY *)(Ia32Idtr->Base);
>        MailboxLocation = (UINT64 *) (UINTN)
> (Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetLow +
> -
> (Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetHigh << 16));
> +                                  (UINT32)
> (Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetHigh << 16));
>        mMailboxPointer = (DEBUG_AGENT_MAILBOX
> *)(UINTN)(*MailboxLocation);
>        VerifyMailboxChecksum (mMailboxPointer);
>        //
> --
> 1.9.5.msysgit.0


------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors 
network devices and physical & virtual servers, alerts via email & sms 
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to