...
1#include "funcdata.h"
2#include "textflag.h"
3
4// nativecall(codeSegment, ce, moduleInstanceAddress)
5TEXT ·nativecall(SB), NOSPLIT|NOFRAME, $0-24
6 // Load the address of *callEngine into arm64ReservedRegisterForCallEngine.
7 MOVD ce+8(FP), R0
8
9 // In arm64, return address is stored in R30 after jumping into the code.
10 // We save the return address value into archContext.compilerReturnAddress in Engine.
11 // Note that the const 144 drifts after editting Engine or archContext struct. See TestArchContextOffsetInEngine.
12 MOVD R30, 144(R0)
13
14 // Load the address of *wasm.ModuleInstance into arm64CallingConventionModuleInstanceAddressRegister.
15 MOVD moduleInstanceAddress+16(FP), R29
16
17 // Load the address of native code.
18 MOVD codeSegment+0(FP), R1
19
20 // Jump to native code.
21 JMP (R1)
View as plain text