Re: [edk2-devel][PATCH v2] IntelFsp2Pkg: BaseFspDebugLibSerialPort Support for X64
Thanks Ted for updating patch! Reviewed-by: Chasel Chiu > -Original Message- > From: Kuo, Ted > Sent: Monday, March 14, 2022 10:33 AM > To: devel@edk2.groups.io > Cc: Chiu, Chasel ; Desimone, Nathaniel L > ; Zeng, Star ; S, Ashraf > Ali > Subject: [edk2-devel][PATCH v2] IntelFsp2Pkg: BaseFspDebugLibSerialPort > Support for X64 > > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3833 > Add BaseFspDebugLibSerialPort Support for X64. > > Cc: Chasel Chiu > Cc: Nate DeSimone > Cc: Star Zeng > Cc: Ashraf Ali S > Cc: Ted Kuo > Signed-off-by: Ted Kuo > --- > .../BaseFspDebugLibSerialPort.inf | 5 ++- > .../Library/BaseFspDebugLibSerialPort/DebugLib.c | 39 > +- > .../BaseFspDebugLibSerialPort/X64/FspDebug.nasm| 25 ++ > 3 files changed, 53 insertions(+), 16 deletions(-) create mode 100644 > IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/X64/FspDebug.nasm > > diff --git > a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/BaseFspDebugLibSerialPort.i > nf > b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/BaseFspDebugLibSerialPort.i > nf > index 14b1899e6c..395def57c3 100644 > --- > a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/BaseFspDebugLibSerialPort.i > nf > +++ b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/BaseFspDebugLibSeri > +++ alPort.inf > @@ -16,7 +16,7 @@ >LIBRARY_CLASS = DebugLib > > # > -# VALID_ARCHITECTURES = IA32 > +# VALID_ARCHITECTURES = IA32 X64 > # > > [Sources] > @@ -25,6 +25,9 @@ > [Sources.Ia32] >Ia32/FspDebug.nasm > > +[Sources.X64] > + X64/FspDebug.nasm > + > [Packages] >MdePkg/MdePkg.dec >IntelFsp2Pkg/IntelFsp2Pkg.dec > diff --git a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib.c > b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib.c > index c8824cde7f..cb2317bfb2 100644 > --- a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib.c > +++ b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib.c > @@ -33,7 +33,7 @@ VA_LIST mVaListNull; > >@return StackFramePointer stack frame pointer of function call. > **/ > -UINT32 * > +UINTN * > EFIAPI > GetStackFramePointer ( >VOID > @@ -193,13 +193,13 @@ DebugBPrint ( > **/ > VOID > FillHex ( > - UINT32 Value, > + UINTN Value, >CHAR8 *Buffer >) > { >INTN Idx; > > - for (Idx = 7; Idx >= 0; Idx--) { > + for (Idx = (sizeof (UINTN) * 2) - 1; Idx >= 0; Idx--) { > Buffer[Idx] = mHexTable[Value & 0x0F]; > Value >>= 4; >} > @@ -228,26 +228,35 @@ DebugAssertInternal ( >) > { >CHAR8 Buffer[MAX_DEBUG_MESSAGE_LENGTH]; > - UINT32 *Frame; > + UINTN *Frame; > > - Frame = (UINT32 *)GetStackFramePointer (); > + Frame = (UINTN *)GetStackFramePointer (); > >// >// Generate the ASSERT() message in Ascii format >// > - AsciiStrnCpyS ( > -Buffer, > -sizeof (Buffer) / sizeof (CHAR8), > -"-> EBP:0x EIP:0x\n", > -sizeof (Buffer) / sizeof (CHAR8) - 1 > -); > + if (sizeof (UINTN) == sizeof (UINT32)) { > +AsciiStrnCpyS ( > + Buffer, > + sizeof (Buffer) / sizeof (CHAR8), > + "-> EBP:0x EIP:0x\n", > + sizeof (Buffer) / sizeof (CHAR8) - 1 > + ); > + } else { > +AsciiStrnCpyS ( > + Buffer, > + sizeof (Buffer) / sizeof (CHAR8), > + "-> RBP:0x RIP:0x\n", > + sizeof (Buffer) / sizeof (CHAR8) - 1 > + ); > + } >SerialPortWrite ((UINT8 *)"ASSERT DUMP:\n", 13); >while (Frame != NULL) { > -FillHex ((UINT32)Frame, Buffer + 9); > -FillHex (Frame[1], Buffer + 9 + 8 + 8); > +FillHex ((UINTN)Frame, Buffer + 9); > +FillHex (Frame[1], Buffer + 9 + (sizeof (UINTN) * 2) + 8); > SerialPortWrite ((UINT8 *)Buffer, AsciiStrLen (Buffer)); > -if ((Frame[0] > (UINT32)Frame) && (Frame[0] < (UINT32)Frame + > 0x0010)) { > - Frame = (UINT32 *)Frame[0]; > +if ((Frame[0] > (UINTN)Frame) && (Frame[0] < (UINTN)Frame + 0x0010)) > { > + Frame = (UINTN *)Frame[0]; > } else { >Frame = NULL; > } > diff --git > a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/X64/FspDebug.nasm > b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/X64/FspDebug.nasm > new file mode 100644 > index 00..6cf0f0af8b > --- /dev/null > +++ b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/X64/FspDebug.nasm > @@ -0,0 +1,25 @
[edk2-devel][PATCH v2] IntelFsp2Pkg: BaseFspDebugLibSerialPort Support for X64
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3833 Add BaseFspDebugLibSerialPort Support for X64. Cc: Chasel Chiu Cc: Nate DeSimone Cc: Star Zeng Cc: Ashraf Ali S Cc: Ted Kuo Signed-off-by: Ted Kuo --- .../BaseFspDebugLibSerialPort.inf | 5 ++- .../Library/BaseFspDebugLibSerialPort/DebugLib.c | 39 +- .../BaseFspDebugLibSerialPort/X64/FspDebug.nasm| 25 ++ 3 files changed, 53 insertions(+), 16 deletions(-) create mode 100644 IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/X64/FspDebug.nasm diff --git a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/BaseFspDebugLibSerialPort.inf b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/BaseFspDebugLibSerialPort.inf index 14b1899e6c..395def57c3 100644 --- a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/BaseFspDebugLibSerialPort.inf +++ b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/BaseFspDebugLibSerialPort.inf @@ -16,7 +16,7 @@ LIBRARY_CLASS = DebugLib # -# VALID_ARCHITECTURES = IA32 +# VALID_ARCHITECTURES = IA32 X64 # [Sources] @@ -25,6 +25,9 @@ [Sources.Ia32] Ia32/FspDebug.nasm +[Sources.X64] + X64/FspDebug.nasm + [Packages] MdePkg/MdePkg.dec IntelFsp2Pkg/IntelFsp2Pkg.dec diff --git a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib.c b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib.c index c8824cde7f..cb2317bfb2 100644 --- a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib.c +++ b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib.c @@ -33,7 +33,7 @@ VA_LIST mVaListNull; @return StackFramePointer stack frame pointer of function call. **/ -UINT32 * +UINTN * EFIAPI GetStackFramePointer ( VOID @@ -193,13 +193,13 @@ DebugBPrint ( **/ VOID FillHex ( - UINT32 Value, + UINTN Value, CHAR8 *Buffer ) { INTN Idx; - for (Idx = 7; Idx >= 0; Idx--) { + for (Idx = (sizeof (UINTN) * 2) - 1; Idx >= 0; Idx--) { Buffer[Idx] = mHexTable[Value & 0x0F]; Value >>= 4; } @@ -228,26 +228,35 @@ DebugAssertInternal ( ) { CHAR8 Buffer[MAX_DEBUG_MESSAGE_LENGTH]; - UINT32 *Frame; + UINTN *Frame; - Frame = (UINT32 *)GetStackFramePointer (); + Frame = (UINTN *)GetStackFramePointer (); // // Generate the ASSERT() message in Ascii format // - AsciiStrnCpyS ( -Buffer, -sizeof (Buffer) / sizeof (CHAR8), -"-> EBP:0x EIP:0x\n", -sizeof (Buffer) / sizeof (CHAR8) - 1 -); + if (sizeof (UINTN) == sizeof (UINT32)) { +AsciiStrnCpyS ( + Buffer, + sizeof (Buffer) / sizeof (CHAR8), + "-> EBP:0x EIP:0x\n", + sizeof (Buffer) / sizeof (CHAR8) - 1 + ); + } else { +AsciiStrnCpyS ( + Buffer, + sizeof (Buffer) / sizeof (CHAR8), + "-> RBP:0x RIP:0x\n", + sizeof (Buffer) / sizeof (CHAR8) - 1 + ); + } SerialPortWrite ((UINT8 *)"ASSERT DUMP:\n", 13); while (Frame != NULL) { -FillHex ((UINT32)Frame, Buffer + 9); -FillHex (Frame[1], Buffer + 9 + 8 + 8); +FillHex ((UINTN)Frame, Buffer + 9); +FillHex (Frame[1], Buffer + 9 + (sizeof (UINTN) * 2) + 8); SerialPortWrite ((UINT8 *)Buffer, AsciiStrLen (Buffer)); -if ((Frame[0] > (UINT32)Frame) && (Frame[0] < (UINT32)Frame + 0x0010)) { - Frame = (UINT32 *)Frame[0]; +if ((Frame[0] > (UINTN)Frame) && (Frame[0] < (UINTN)Frame + 0x0010)) { + Frame = (UINTN *)Frame[0]; } else { Frame = NULL; } diff --git a/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/X64/FspDebug.nasm b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/X64/FspDebug.nasm new file mode 100644 index 00..6cf0f0af8b --- /dev/null +++ b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/X64/FspDebug.nasm @@ -0,0 +1,25 @@ +;-- +; +; Copyright (c) 2022, Intel Corporation. All rights reserved. +; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Abstract: +; +; FSP Debug functions +; +;-- + +SECTION .text + +;-- +; UINT32 * +; EFIAPI +; GetStackFramePointer ( +; VOID +; ); +;-- +global ASM_PFX(GetStackFramePointer) +ASM_PFX(GetStackFramePointer): +mov rax, rbp +ret + -- 2.16.2.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#87522): https://edk2.groups.io/g/devel/message/87522 Mute This Topic: https://groups.io/mt/89765496/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-