[netcore] Implement missing Bmi1/Bmi2 intrinsics (#16919)
[mono-project.git] / mono / mini / tramp-wasm.c
blob0841ad5288ebdad66206f928b71ab758c02d2998
1 #include "mini.h"
2 #include "interp/interp.h"
4 void mono_wasm_interp_to_native_trampoline (void *target_func, InterpMethodArguments *margs);
5 void mono_sdb_single_step_trampoline (void);
7 static void
8 mono_wasm_specific_trampoline (void)
10 g_error (__func__);
13 gpointer
14 mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_type, MonoDomain *domain, guint32 *code_len)
16 return (gpointer)mono_wasm_specific_trampoline;
19 guchar*
20 mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
22 g_error (__func__);
25 gpointer
26 mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info, gboolean aot)
28 g_error (__func__);
31 void
32 mono_arch_patch_plt_entry (guint8 *code, gpointer *got, host_mgreg_t *regs, guint8 *addr)
34 g_error (__func__);
37 void
38 mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
40 g_error ("mono_arch_patch_callsite");
43 gpointer
44 mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
46 g_error (__func__);
47 return NULL;
50 gpointer
51 mono_arch_get_static_rgctx_trampoline (gpointer arg, gpointer addr)
53 g_error (__func__);
54 return NULL;
57 gpointer
58 mono_arch_get_interp_to_native_trampoline (MonoTrampInfo **info)
60 if (info)
61 *info = mono_tramp_info_create ("interp_to_native_trampoline", (guint8*)mono_wasm_interp_to_native_trampoline, 1, NULL, NULL);
62 return (gpointer)mono_wasm_interp_to_native_trampoline;
65 guint8*
66 mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gboolean aot)
68 g_assert (!aot);
69 const char *name;
70 guint8* code;
71 if (single_step) {
72 name = "sdb_single_step_trampoline";
73 code = (guint8*)mono_wasm_single_step_hit;
74 } else {
75 name = "sdb_breakpoint_trampoline";
76 code = (guint8*)mono_wasm_breakpoint_hit;
79 if (info)
80 *info = mono_tramp_info_create (name, code, 1, NULL, NULL);
81 return code;
84 guint8*
85 mono_arch_get_call_target (guint8 *code)
87 g_error ("mono_arch_get_call_target");
91 * mono_arch_get_plt_info_offset:
93 * Return the PLT info offset belonging to the plt entry PLT_ENTRY.
95 guint32
96 mono_arch_get_plt_info_offset (guint8 *plt_entry, host_mgreg_t *regs, guint8 *code)
98 g_error (__func__);
99 return *(guint32*)(plt_entry + 6);
102 gpointer
103 mono_arch_get_gsharedvt_arg_trampoline (MonoDomain *domain, gpointer arg, gpointer addr)
105 g_error (__func__);
106 return NULL;
109 gpointer
110 mono_arch_get_gsharedvt_trampoline (MonoTrampInfo **info, gboolean aot)
112 g_error (__func__);
113 return NULL;