1__asm__("\
2.global _start\n\
3.align  4\n\
4_start:\n\
5  add a0, x0, sp\n\
6/* Set gp for relaxation. See \n\
7 * https://www.sifive.com/blog/2017/08/28/all-aboard-part-3-linker-relaxation-in-riscv-toolchain/ \n\
8 */ \n\
9.option push  \n\
10.option norelax \n\
111:auipc gp, %pcrel_hi(__global_pointer$) \n\
12  addi  gp, gp, %pcrel_lo(1b) \n\
13.option pop \n\
14  la   s0, _start_c\n\
15  jalr s0\n\
16");
17