Qucs-S S-parameter Viewer & RF Synthesis Tools
Loading...
Searching...
No Matches
switch_alpha_unix.h
1#define STACK_REFPLUS 1
2
3#ifdef SLP_EVAL
4#define STACK_MAGIC 0
5
6#define REGS_TO_SAVE "$9", "$10", "$11", "$12", "$13", "$14", "$15", \
7 "$f2", "$f3", "$f4", "$f5", "$f6", "$f7", "$f8", "$f9"
8
9static int
10slp_switch(void)
11{
12 int ret;
13 long *stackref, stsizediff;
14 __asm__ volatile ("" : : : REGS_TO_SAVE);
15 __asm__ volatile ("mov $30, %0" : "=r" (stackref) : );
16 {
17 SLP_SAVE_STATE(stackref, stsizediff);
18 __asm__ volatile (
19 "addq $30, %0, $30\n\t"
20 : /* no outputs */
21 : "r" (stsizediff)
22 );
23 SLP_RESTORE_STATE();
24 }
25 __asm__ volatile ("" : : : REGS_TO_SAVE);
26 __asm__ volatile ("mov $31, %0" : "=r" (ret) : );
27 return ret;
28}
29
30#endif