#ifndef CKB_C_STDLIB_ENTRY_H_
#define CKB_C_STDLIB_ENTRY_H_
#ifndef CKB_DECLARATION_ONLY
#include "src/impl.c"
#ifndef __SHARED_LIBRARY__
__attribute__((visibility("default"))) __attribute__((naked)) void _start() {
asm volatile(
".option push\n"
".option norelax\n"
#ifndef CKB_NO_ENTRY_GP
"1:auipc gp, %pcrel_hi(__global_pointer$)\n"
"addi gp, gp, %pcrel_lo(1b)\n"
".option pop\n"
#endif
/*
* By default CKB VM initializes all memory to 0, there's no need
* to clear BSS segment again.
*/
"lw a0, 0(sp)\n"
"addi a1, sp, 8\n"
"li a2, 0\n"
"call main\n"
"li a7, 93\n"
"ecall");
}
#endif /* __SHARED_LIBRARY__ */
#endif /* CKB_DECLARATION_ONLY*/
#endif /* CKB_C_STDLIB_ENTRY_H_ */