diff --git a/runtime/vm/compiler/backend/il_riscv.cc b/runtime/vm/compiler/backend/il_riscv.cc index 622e95d55f4..ee8421d0273 100644 --- a/runtime/vm/compiler/backend/il_riscv.cc +++ b/runtime/vm/compiler/backend/il_riscv.cc @@ -1703,7 +1703,11 @@ void NativeEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ PushNativeCalleeSavedRegisters(); -#if defined(USING_SHADOW_CALL_STACK) +#if defined(DART_TARGET_OS_FUCHSIA) || defined(DART_TARGET_OS_ANDROID) + __ sx(GP, + compiler::Address( + THR, compiler::target::Thread::saved_shadow_call_stack_offset())); +#elif defined(USING_SHADOW_CALL_STACK) #error Unimplemented #endif diff --git a/runtime/vm/compiler/stub_code_compiler_riscv.cc b/runtime/vm/compiler/stub_code_compiler_riscv.cc index ce2c910c8b2..6576d22a0b5 100644 --- a/runtime/vm/compiler/stub_code_compiler_riscv.cc +++ b/runtime/vm/compiler/stub_code_compiler_riscv.cc @@ -486,7 +486,7 @@ void StubCodeCompiler::GenerateFfiCallbackTrampolineStub() { #if defined(DART_TARGET_OS_FUCHSIA) // TODO(https://dartbug.com/52579): Remove. if (FLAG_precompiled_mode) { - GenerateLoadBSSEntry(BSS::Relocation::DRT_ExitIsolateGroupBoundIsolate, + GenerateLoadBSSEntry(BSS::Relocation::DLRT_ExitIsolateGroupBoundIsolate, T1, T2); } else { const intptr_t kPCRelativeLoadOffset = 12; diff --git a/runtime/vm/os_fuchsia.cc b/runtime/vm/os_fuchsia.cc index 4f6b563d9b7..9211784ff1a 100644 --- a/runtime/vm/os_fuchsia.cc +++ b/runtime/vm/os_fuchsia.cc @@ -464,14 +464,10 @@ int64_t OS::GetCurrentMonotonicMicrosForTimeline() { #endif } -// TODO(5411554): May need to hoist these architecture dependent code -// into a architecture specific file e.g: os_ia32_fuchsia.cc intptr_t OS::ActivationFrameAlignment() { -#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) || \ - defined(TARGET_ARCH_ARM64) +#if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_ARM64) || \ + defined(TARGET_ARCH_RISCV64) const int kMinimumAlignment = 16; -#elif defined(TARGET_ARCH_ARM) - const int kMinimumAlignment = 8; #else #error Unsupported architecture. #endif diff --git a/runtime/vm/thread_interrupter_fuchsia.cc b/runtime/vm/thread_interrupter_fuchsia.cc index 1049e536b31..f9be836a842 100644 --- a/runtime/vm/thread_interrupter_fuchsia.cc +++ b/runtime/vm/thread_interrupter_fuchsia.cc @@ -92,10 +92,10 @@ class ThreadInterrupterFuchsia : public AllStatic { state->lr = static_cast(regs.lr); #elif defined(TARGET_ARCH_RISCV64) state->pc = static_cast(regs.pc); - state->fp = static_cast(regs.r[FPREG]); - state->csp = static_cast(regs.r[SPREG]); - state->dsp = static_cast(regs.r[SPREG]); - state->lr = static_cast(regs.r[LINK_REGISTER]); + state->fp = static_cast(regs.s0); + state->csp = static_cast(regs.sp); + state->dsp = static_cast(regs.sp); + state->lr = static_cast(regs.ra); #else #error "Unsupported architecture" #endif