Thanks Ted for updating patch! Reviewed-by: Chasel Chiu <[email protected]>
> -----Original Message----- > From: Kuo, Ted <[email protected]> > Sent: Monday, March 14, 2022 10:33 AM > To: [email protected] > Cc: Chiu, Chasel <[email protected]>; Desimone, Nathaniel L > <[email protected]>; Zeng, Star <[email protected]>; S, Ashraf > Ali <[email protected]> > 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 <[email protected]> > Cc: Nate DeSimone <[email protected]> > Cc: Star Zeng <[email protected]> > Cc: Ashraf Ali S <[email protected]> > Cc: Ted Kuo <[email protected]> > Signed-off-by: Ted Kuo <[email protected]> > --- > .../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:0x00000000 EIP:0x00000000\n", > - sizeof (Buffer) / sizeof (CHAR8) - 1 > - ); > + if (sizeof (UINTN) == sizeof (UINT32)) { > + AsciiStrnCpyS ( > + Buffer, > + sizeof (Buffer) / sizeof (CHAR8), > + "-> EBP:0x00000000 EIP:0x00000000\n", > + sizeof (Buffer) / sizeof (CHAR8) - 1 > + ); > + } else { > + AsciiStrnCpyS ( > + Buffer, > + sizeof (Buffer) / sizeof (CHAR8), > + "-> RBP:0x0000000000000000 RIP:0x0000000000000000\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 + > 0x00100000)) { > - Frame = (UINT32 *)Frame[0]; > + if ((Frame[0] > (UINTN)Frame) && (Frame[0] < (UINTN)Frame + 0x00100000)) > { > + 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 0000000000..6cf0f0af8b > --- /dev/null > +++ b/IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/X64/FspDebug.nasm > @@ -0,0 +1,25 @@ > +;---------------------------------------------------------------------- > +-------- > +; > +; Copyright (c) 2022, Intel Corporation. All rights reserved.<BR> ; > +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 (#87556): https://edk2.groups.io/g/devel/message/87556 Mute This Topic: https://groups.io/mt/89765496/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
