mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-04-24 22:57:58 +00:00
update 64bit target flags (#113)
This commit is contained in:
@@ -9,7 +9,11 @@
|
||||
|
||||
#define POLKAVM_REGS_FOR_TY_void 0
|
||||
#define POLKAVM_REGS_FOR_TY_i32 1
|
||||
#define POLKAVM_REGS_FOR_TY_i64 2
|
||||
#ifdef _LP64
|
||||
#define POLKAVM_REGS_FOR_TY_i64 1
|
||||
#else
|
||||
#define POLKAVM_REGS_FOR_TY_i64 2
|
||||
#endif
|
||||
|
||||
#define POLKAVM_REGS_FOR_TY_int8_t POLKAVM_REGS_FOR_TY_i32
|
||||
#define POLKAVM_REGS_FOR_TY_uint8_t POLKAVM_REGS_FOR_TY_i32
|
||||
@@ -107,6 +111,26 @@ struct PolkaVM_Metadata {
|
||||
unsigned char output_regs;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#ifdef _LP64
|
||||
#define POLKAVM_EXPORT_DEF() \
|
||||
".quad %[metadata]\n" \
|
||||
".quad %[function]\n"
|
||||
#else
|
||||
#define POLKAVM_EXPORT_DEF() \
|
||||
".word %[metadata]\n" \
|
||||
".word %[function]\n"
|
||||
#endif
|
||||
|
||||
#ifdef _LP64
|
||||
#define POLKAVM_IMPORT_DEF() \
|
||||
".word 0x0000000b\n" \
|
||||
".quad %[metadata]\n"
|
||||
#else
|
||||
#define POLKAVM_IMPORT_DEF() \
|
||||
".word 0x0000000b\n" \
|
||||
".word %[metadata]\n"
|
||||
#endif
|
||||
|
||||
#define POLKAVM_EXPORT(arg_return_ty, fn_name, ...) \
|
||||
static struct PolkaVM_Metadata POLKAVM_JOIN(fn_name, __EXPORT_METADATA) __attribute__ ((section(".polkavm_metadata"))) = { \
|
||||
1, 0, sizeof(#fn_name) - 1, #fn_name, POLKAVM_COUNT_REGS(__VA_ARGS__), POLKAVM_COUNT_REGS(arg_return_ty) \
|
||||
@@ -115,8 +139,7 @@ static void __attribute__ ((naked, used)) POLKAVM_UNIQUE(polkavm_export_dummy)()
|
||||
__asm__( \
|
||||
".pushsection .polkavm_exports,\"R\",@note\n" \
|
||||
".byte 1\n" \
|
||||
".word %[metadata]\n" \
|
||||
".word %[function]\n" \
|
||||
POLKAVM_EXPORT_DEF() \
|
||||
".popsection\n" \
|
||||
: \
|
||||
: \
|
||||
@@ -130,10 +153,9 @@ static void __attribute__ ((naked, used)) POLKAVM_UNIQUE(polkavm_export_dummy)()
|
||||
static struct PolkaVM_Metadata POLKAVM_JOIN(fn_name, __IMPORT_METADATA) __attribute__ ((section(".polkavm_metadata"))) = { \
|
||||
1, 0, sizeof(#fn_name) - 1, #fn_name, POLKAVM_COUNT_REGS(__VA_ARGS__), POLKAVM_COUNT_REGS(arg_return_ty) \
|
||||
}; \
|
||||
static arg_return_ty __attribute__ ((naked, used)) fn_name(POLKAVM_IMPORT_ARGS_IMPL(__VA_ARGS__)) { \
|
||||
static arg_return_ty __attribute__ ((used, naked)) fn_name(POLKAVM_IMPORT_ARGS_IMPL(__VA_ARGS__)) { \
|
||||
__asm__( \
|
||||
".word 0x0000000b\n" \
|
||||
".word %[metadata]\n" \
|
||||
POLKAVM_IMPORT_DEF() \
|
||||
"ret\n" \
|
||||
: \
|
||||
: \
|
||||
|
||||
Reference in New Issue
Block a user