D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
hc_python
/
lib64
/
python3.8
/
site-packages
/
greenlet
/
platform
/
Filename :
switch_sh_gcc.h
back
Copy
#define STACK_REFPLUS 1 #ifdef SLP_EVAL #define STACK_MAGIC 0 #define REGS_TO_SAVE "r8", "r9", "r10", "r11", "r13", \ "fr12", "fr13", "fr14", "fr15" // r12 Global context pointer, GP // r14 Frame pointer, FP // r15 Stack pointer, SP static int slp_switch(void) { int err; void* fp; int *stackref, stsizediff; __asm__ volatile("" : : : REGS_TO_SAVE); __asm__ volatile("mov.l r14, %0" : "=m"(fp) : :); __asm__("mov r15, %0" : "=r"(stackref)); { SLP_SAVE_STATE(stackref, stsizediff); __asm__ volatile( "add %0, r15\n" "add %0, r14\n" : /* no outputs */ : "r"(stsizediff)); SLP_RESTORE_STATE(); __asm__ volatile("mov r0, %0" : "=r"(err) : :); } __asm__ volatile("mov.l %0, r14" : : "m"(fp) :); __asm__ volatile("" : : : REGS_TO_SAVE); return err; } #endif