From a05c242429f03251dc8db353714c240da6d6ceaa Mon Sep 17 00:00:00 2001 From: Liam Date: Mon, 11 Dec 2023 23:02:01 -0500 Subject: nce: adjust initialization for repeated calls --- src/core/arm/nce/arm_nce.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/core/arm/nce/arm_nce.cpp b/src/core/arm/nce/arm_nce.cpp index 858c9f0a7..1311e66a9 100644 --- a/src/core/arm/nce/arm_nce.cpp +++ b/src/core/arm/nce/arm_nce.cpp @@ -251,21 +251,24 @@ void ArmNce::SetSvcArguments(std::span args) { ArmNce::ArmNce(System& system, bool uses_wall_clock, std::size_t core_index) : ArmInterface{uses_wall_clock}, m_system{system}, m_core_index{core_index} { m_guest_ctx.system = &m_system; - - // Allocate signal stack. - m_stack = std::make_unique(StackSize); } ArmNce::~ArmNce() = default; void ArmNce::Initialize() { - m_thread_id = gettid(); + if (m_thread_id == -1) { + m_thread_id = gettid(); + } // Configure signal stack. - stack_t ss{}; - ss.ss_sp = m_stack.get(); - ss.ss_size = StackSize; - sigaltstack(&ss, nullptr); + if (!m_stack) { + m_stack = std::make_unique(StackSize); + + stack_t ss{}; + ss.ss_sp = m_stack.get(); + ss.ss_size = StackSize; + sigaltstack(&ss, nullptr); + } // Set up signals. static std::once_flag flag; -- cgit v1.2.3