On Tue, Sep 19, 2023 at 03:16:59AM -0500, Andrei Warkentin wrote: > InternalLongJump was not returning the 2nd parameter passed > to LongJmp (Value) as the return value from SetJmp. > > Seen with code compiled with -Os, where an LongJmp (Buffer, -1) > somehow translated to SetJmp returning 0... > > Cc: Yong Li <yong...@intel.com> > Cc: Sunil V L <suni...@ventanamicro.com> > Cc: Tuan Phan <tp...@ventanamicro.com> > Cc: Daniel Schaefer <g...@danielschaefer.me> > Signed-off-by: Andrei Warkentin <andrei.warken...@intel.com> > --- > MdePkg/Library/BaseLib/RiscV64/RiscVSetJumpLongJump.S | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/MdePkg/Library/BaseLib/RiscV64/RiscVSetJumpLongJump.S > b/MdePkg/Library/BaseLib/RiscV64/RiscVSetJumpLongJump.S > index 34486eabba4c..e97a7d0727b8 100644 > --- a/MdePkg/Library/BaseLib/RiscV64/RiscVSetJumpLongJump.S > +++ b/MdePkg/Library/BaseLib/RiscV64/RiscVSetJumpLongJump.S > @@ -3,6 +3,7 @@ > // Set/Long jump for RISC-V > // > // Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights > reserved.<BR> > +// Copyright (c) 2023, Intel Corporation. All rights reserved.<BR> > // > // SPDX-License-Identifier: BSD-2-Clause-Patent > // > @@ -47,9 +48,5 @@ InternalLongJump: > REG_L s10, 11*SZREG(a0) > REG_L s11, 12*SZREG(a0) > REG_L sp, 13*SZREG(a0) > - > - add a0, s0, 0 > - add a1, s1, 0 > - add a2, s2, 0 > - add a3, s3, 0 > + mv a0, a1 > ret
Thanks!, Andrei for finding and fixing this issue. Reviewed-by: Sunil V L <suni...@ventanamicro.com> -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108826): https://edk2.groups.io/g/devel/message/108826 Mute This Topic: https://groups.io/mt/101452205/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-