Qucs-S S-parameter Viewer & RF Synthesis Tools
Loading...
Searching...
No Matches
docs
help
help-venv
lib
python3.12
site-packages
greenlet
platform
switch_sh_gcc.h
1
#define STACK_REFPLUS 1
2
3
#ifdef SLP_EVAL
4
#define STACK_MAGIC 0
5
#define REGS_TO_SAVE "r8", "r9", "r10", "r11", "r13", \
6
"fr12", "fr13", "fr14", "fr15"
7
8
// r12 Global context pointer, GP
9
// r14 Frame pointer, FP
10
// r15 Stack pointer, SP
11
12
static
int
13
slp_switch(
void
)
14
{
15
int
err;
16
void
* fp;
17
int
*stackref, stsizediff;
18
__asm__
volatile
(
""
: : : REGS_TO_SAVE);
19
__asm__
volatile
(
"mov.l r14, %0"
:
"=m"
(fp) : :);
20
__asm__(
"mov r15, %0"
:
"=r"
(stackref));
21
{
22
SLP_SAVE_STATE(stackref, stsizediff);
23
__asm__
volatile
(
24
"add %0, r15\n"
25
"add %0, r14\n"
26
:
/* no outputs */
27
:
"r"
(stsizediff));
28
SLP_RESTORE_STATE();
29
__asm__
volatile
(
"mov r0, %0"
:
"=r"
(err) : :);
30
}
31
__asm__
volatile
(
"mov.l %0, r14"
: :
"m"
(fp) :);
32
__asm__
volatile
(
""
: : : REGS_TO_SAVE);
33
return
err;
34
}
35
36
#endif
Generated by
1.9.8