Skip to content

Commit

Permalink
Merge pull request #137 from andreas-schwab/master
Browse files Browse the repository at this point in the history
Add support for RISC-V
  • Loading branch information
snaury committed Jul 23, 2018
2 parents 9b39e4b + b3e2822 commit 7959fea
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
32 changes: 32 additions & 0 deletions platform/switch_riscv_unix.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#define STACK_REFPLUS 1

#ifdef SLP_EVAL
#define STACK_MAGIC 0

#define REGS_TO_SAVE "s0", "s1", "s2", "s3", "s4", "s5", \
"s6", "s7", "s8", "s9", "s10", "s11", "fs0", "fs1", \
"fs2", "fs3", "fs4", "fs5", "fs6", "fs7", "fs8", "fs9", \
"fs10", "fs11"

static int
slp_switch(void)
{
register int ret;
register long *stackref, stsizediff;
__asm__ volatile ("" : : : REGS_TO_SAVE);
__asm__ volatile ("mv %0, sp" : "=r" (stackref) : );
{
SLP_SAVE_STATE(stackref, stsizediff);
__asm__ volatile (
"add sp, sp, %0\n\t"
: /* no outputs */
: "r" (stsizediff)
);
SLP_RESTORE_STATE();
}
__asm__ volatile ("" : : : REGS_TO_SAVE);
__asm__ volatile ("mv %0, zero" : "=r" (ret) : );
return ret;
}

#endif
2 changes: 2 additions & 0 deletions slp_platformselect.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,6 @@
#include "platform/switch_m68k_gcc.h" /* gcc on m68k */
#elif defined(__GNUC__) && defined(__csky__)
#include "platform/switch_csky_gcc.h" /* gcc on csky */
#elif defined(__GNUC__) && defined(__riscv)
#include "platform/switch_riscv_unix.h" /* gcc on RISC-V */
#endif

0 comments on commit 7959fea

Please sign in to comment.