Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
Actor Framework
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
Actor Framework
Commits
97724ab7
Commit
97724ab7
authored
Jun 11, 2012
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
boost.context
parent
68494302
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
1183 additions
and
1 deletion
+1183
-1
.gitignore
.gitignore
+0
-1
third_party/boost_context/src/asm/fcontext_arm_aapcs_elf_gas.S
..._party/boost_context/src/asm/fcontext_arm_aapcs_elf_gas.S
+98
-0
third_party/boost_context/src/asm/fcontext_i386_sysv_elf_gas.S
..._party/boost_context/src/asm/fcontext_i386_sysv_elf_gas.S
+122
-0
third_party/boost_context/src/asm/fcontext_i386_sysv_macho_gas.S
...arty/boost_context/src/asm/fcontext_i386_sysv_macho_gas.S
+118
-0
third_party/boost_context/src/asm/fcontext_mips32_o32_elf_gas.S
...party/boost_context/src/asm/fcontext_mips32_o32_elf_gas.S
+144
-0
third_party/boost_context/src/asm/fcontext_ppc32_sysv_elf_gas.S
...party/boost_context/src/asm/fcontext_ppc32_sysv_elf_gas.S
+222
-0
third_party/boost_context/src/asm/fcontext_ppc64_sysv_elf_gas.S
...party/boost_context/src/asm/fcontext_ppc64_sysv_elf_gas.S
+250
-0
third_party/boost_context/src/asm/fcontext_x86_64_sysv_elf_gas.S
...arty/boost_context/src/asm/fcontext_x86_64_sysv_elf_gas.S
+116
-0
third_party/boost_context/src/asm/fcontext_x86_64_sysv_macho_gas.s
...ty/boost_context/src/asm/fcontext_x86_64_sysv_macho_gas.s
+113
-0
No files found.
.gitignore
View file @
97724ab7
...
@@ -8,7 +8,6 @@
...
@@ -8,7 +8,6 @@
*.lo
*.lo
*.o
*.o
*.png
*.png
*.s
*.tmp
*.tmp
.DS_Store
.DS_Store
.deps/
.deps/
...
...
third_party/boost_context/src/asm/fcontext_arm_aapcs_elf_gas.S
0 → 100644
View file @
97724ab7
/*
Copyright
Oliver
Kowalke
2009
.
Distributed
under
the
Boost
Software
License
,
Version
1
.0.
(
See
accompanying
file
LICENSE_1_0
.
txt
or
copy
at
http
://
www.boost.org
/
LICENSE_1_0
.
txt
)
*/
/*******************************************************************
*
*
*
-------------------------------------------------------------
*
*
| 0 |
1
| 2 |
3
| 4 |
5
| 6 |
7
| 8 |
9
|
*
*
-------------------------------------------------------------
*
*
| 0x0 |
0x4
| 0x8 |
0xc
| 0x10|
0x14
| 0x18|
0x1c
| 0x20|
0x24
|
*
*
-------------------------------------------------------------
*
*
| v1 |
v2
| v3 |
v4
| v5 |
v6
| v7 |
v8
| sp |
lr
|
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 10 |
|
*
*
-------------------------------------------------------------
*
*
| 0x28|
|
*
*
-------------------------------------------------------------
*
*
| pc |
|
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 11 |
12
| |
*
*
-------------------------------------------------------------
*
*
| 0x2c|
0x30
| |
*
*
-------------------------------------------------------------
*
*
|sbase|slimit| |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 13 |
14
| 15 |
16
| 17 |
18
| 19 |
20
| 21 |
22
|
*
*
-------------------------------------------------------------
*
*
| 0x34|
0x38
|0x3c|
0x40
| 0x44|
0x48
| 0x4c|
0x50
| 0x54|
0x58
|
*
*
-------------------------------------------------------------
*
*
| s16 |
s17
| s18 |
s19
| s20 |
s21
| s22 |
s23
| s24 |
s25
|
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 23 |
24
| 25 |
26
| 27 |
28
| |
*
*
-------------------------------------------------------------
*
*
| 0x5c|
0x60
| 0x64|
0x68
| 0x6c|
0x70
| |
*
*
-------------------------------------------------------------
*
*
| s26 |
s27
| s28 |
s29
| s30 |
s31
| |
*
*
-------------------------------------------------------------
*
*
*
*
*****************************************************************/
.
text
.
globl
jump_fcontext
.
align
2
.
type
jump_fcontext
,%
function
jump_fcontext
:
stmia
a1
,
{
v1
-
v8
,
sp
-
lr
}
@
save
V1
-
V8
,
SP
-
LR
str
lr
,
[
a1
,#
40
]
@
save
LR
as
PC
#if (defined(__VFP_FP__) && !defined(__SOFTFP__))
cmp
a4
,
#
0
@
test
if
fpu
env
should
be
preserved
be
1
f
ldr
a4
,
[
a1
,#
52
]
stmia
a4
,
{
s16
-
s31
}
@
save
S16
-
S31
ldr
a4
,
[
a2
,#
52
]
ldmia
a4
,
{
s16
-
s31
}
@
restore
S16
-
S31
1
:
#endif
mov
a1
,
a3
@
use
third
arg
as
return
value
after
jump
@
and
as
first
arg
in
context
function
ldmia
a2
,
{
v1
-
v8
,
sp
-
pc
}
@
restore
v1
-
V8
,
SP
-
PC
.
size
jump_fcontext
,.-
jump_fcontext
.
text
.
globl
make_fcontext
.
align
2
.
type
make_fcontext
,%
function
make_fcontext
:
str
a1
,
[
a1
,#
0
]
@
save
the
address
of
passed
context
str
a2
,
[
a1
,#
40
]
@
save
address
of
the
context
function
ldr
a2
,
[
a1
,#
44
]
@
load
the
stack
base
push
{
a1
,
lr
}
@
save
pointer
to
fcontext_t
mov
a1
,
a2
@
stack
pointer
as
arg
for
align_stack
bl
align_stack
@
PLT
@
align
stack
mov
a2
,
a1
@
begin
of
aligned
stack
pop
{
a1
,
lr
}
@
restore
pointer
to
fcontext_t
str
a2
,
[
a1
,#
32
]
@
save
the
aligned
stack
base
adr
a2
,
finish
@
address
of
finish
; called after context function returns
str
a2
,
[
a1
,#
36
]
mov
a1
,
#
0
bx
lr
finish
:
mov
a1
,
#
0
@
exit
code
is
zero
bl
_exit
@
PLT
@
exit
application
.
size
make_fcontext
,.-
make_fcontext
third_party/boost_context/src/asm/fcontext_i386_sysv_elf_gas.S
0 → 100644
View file @
97724ab7
/*
Copyright
Oliver
Kowalke
2009
.
Distributed
under
the
Boost
Software
License
,
Version
1
.0.
(
See
accompanying
file
LICENSE_1_0
.
txt
or
copy
at
http
://
www.boost.org
/
LICENSE_1_0
.
txt
)
*/
/********************************************************************
*
*
*
--------------------------------------------------------------
*
*
| 0 |
1
| 2 |
3
| 4 |
5
|
*
*
--------------------------------------------------------------
*
*
| 0x0 |
0x4
| 0x8 |
0xc
| 0x10 |
0x14
|
*
*
--------------------------------------------------------------
*
*
| EDI |
ESI
| EBX |
EBP
| ESP |
EIP
|
*
*
--------------------------------------------------------------
*
*
--------------------------------------------------------------
*
*
| 6 |
7
| |
*
*
--------------------------------------------------------------
*
*
| 0x18 |
0x1c
| |
*
*
--------------------------------------------------------------
*
*
| sbase |
slimit
| |
*
*
--------------------------------------------------------------
*
*
--------------------------------------------------------------
*
*
| 8 |
9
| |
*
*
--------------------------------------------------------------
*
*
| 0x20 |
0x24
| |
*
*
--------------------------------------------------------------
*
*
| fc_mxcsr|fc_x87_cw| |
*
*
--------------------------------------------------------------
*
*
*
*
*****************************************************************/
.
text
.
globl
jump_fcontext
.
align
2
.
type
jump_fcontext
,@
function
jump_fcontext
:
movl
0x4
(%
esp
),
%
ecx
/*
load
address
of
the
first
fcontext_t
arg
*/
movl
%
edi
,
(%
ecx
)
/*
save
EDI
*/
movl
%
esi
,
0x4
(%
ecx
)
/*
save
ESI
*/
movl
%
ebx
,
0x8
(%
ecx
)
/*
save
EBX
*/
movl
%
ebp
,
0xc
(%
ecx
)
/*
save
EBP
*/
leal
0x4
(%
esp
),
%
eax
/*
exclude
the
return
address
*/
movl
%
eax
,
0x10
(%
ecx
)
/*
save
as
stack
pointer
*/
movl
(%
esp
),
%
eax
/*
load
return
address
*/
movl
%
eax
,
0x14
(%
ecx
)
/*
save
return
address
*/
movl
0x8
(%
esp
),
%
edx
/*
load
address
of
the
second
fcontext_t
arg
*/
movl
(%
edx
),
%
edi
/*
restore
EDI
*/
movl
0x4
(%
edx
),
%
esi
/*
restore
ESI
*/
movl
0x8
(%
edx
),
%
ebx
/*
restore
EBX
*/
movl
0xc
(%
edx
),
%
ebp
/*
restore
EBP
*/
movl
0x10
(%
esp
),
%
eax
/*
check
if
fpu
enve
preserving
was
requested
*/
test
%
eax
,
%
eax
je
1
f
stmxcsr
0x20
(%
ecx
)
/*
save
MMX
control
and
status
word
*/
fnstcw
0x24
(%
ecx
)
/*
save
x87
control
word
*/
ldmxcsr
0x20
(%
edx
)
/*
restore
MMX
control
and
status
word
*/
fldcw
0x24
(%
edx
)
/*
restore
x87
control
word
*/
1
:
movl
0xc
(%
esp
),
%
eax
/*
use
third
arg
as
return
value
after
jump
*/
movl
0x10
(%
edx
),
%
esp
/*
restore
ESP
*/
movl
%
eax
,
0x4
(%
esp
)
/*
use
third
arg
as
first
arg
in
context
function
*/
movl
0x14
(%
edx
),
%
edx
/*
fetch
the
address
to
return
to
*/
jmp
*%
edx
/*
indirect
jump
to
context
*/
.
size
jump_fcontext
,.-
jump_fcontext
.
text
.
globl
make_fcontext
.
align
2
.
type
make_fcontext
,@
function
make_fcontext
:
movl
0x4
(%
esp
),
%
eax
/*
load
address
of
the
fcontext_t
*/
movl
%
eax
,
(%
eax
)
/*
save
the
address
of
current
context
*/
movl
0x8
(%
esp
),
%
ecx
/*
load
the
address
of
the
context
function
*/
movl
%
ecx
,
0x14
(%
eax
)
/*
save
the
address
of
the
context
function
*/
movl
0x18
(%
eax
),
%
edx
/*
load
the
stack
base
*/
pushl
%
eax
/*
save
pointer
to
fcontext_t
*/
pushl
%
ebx
/*
save
EBX
*/
pushl
%
edx
/*
stack
pointer
as
arg
for
align_stack
*/
call
1
f
1
:
popl
%
ebx
/*
address
of
label
1
*/
addl
$
_GLOBAL_OFFSET_TABLE_
+[
.
-
1
b
],
%
ebx
/*
compute
address
of
GOT
and
store
it
in
EBX
*/
call
align_stack
@
PLT
/*
align
stack
*/
movl
%
eax
,
%
edx
/*
begin
of
aligned
stack
*/
popl
%
eax
/*
remove
arg
for
align_stack
*/
popl
%
ebx
/*
restore
EBX
*/
popl
%
eax
/*
restore
pointer
to
fcontext_t
*/
leal
-
0x14
(%
edx
),
%
edx
/*
reserve
space
for
the
last
frame
on
stack
,
(
ESP
+
4
)
%
16
==
0
*/
movl
%
edx
,
0x10
(%
eax
)
/*
save
the
aligned
stack
base
*/
stmxcsr
0x20
(%
eax
)
/*
save
MMX
control
and
status
word
*/
fnstcw
0x24
(%
eax
)
/*
save
x87
control
word
*/
call
2
f
2
:
popl
%
ecx
/*
address
of
label
2
*/
addl
$finish
-
2
b
,
%
ecx
/*
helper
code
executed
after
context
function
returns
*/
movl
%
ecx
,
(%
edx
)
xorl
%
eax
,
%
eax
ret
finish
:
leal
-
0xc
(%
esp
),
%
esp
call
3
f
3
:
popl
%
ebx
/*
address
of
label
3
*/
addl
$
_GLOBAL_OFFSET_TABLE_
+[
.
-
3
b
],
%
ebx
/*
compute
address
of
GOT
and
store
it
in
EBX
*/
xorl
%
eax
,
%
eax
pushl
%
eax
/*
exit
code
is
zero
*/
call
_exit
@
PLT
/*
exit
application
*/
hlt
.
size
make_fcontext
,.-
make_fcontext
third_party/boost_context/src/asm/fcontext_i386_sysv_macho_gas.S
0 → 100644
View file @
97724ab7
/*
Copyright
Oliver
Kowalke
2009
.
Distributed
under
the
Boost
Software
License
,
Version
1
.0.
(
See
accompanying
file
LICENSE_1_0
.
txt
or
copy
at
http
://
www.boost.org
/
LICENSE_1_0
.
txt
)
*/
/********************************************************************
*
*
*
--------------------------------------------------------------
*
*
| 0 |
1
| 2 |
3
| 4 |
5
|
*
*
--------------------------------------------------------------
*
*
| 0x0 |
0x4
| 0x8 |
0xc
| 0x10 |
0x14
|
*
*
--------------------------------------------------------------
*
*
| EDI |
ESI
| EBX |
EBP
| ESP |
EIP
|
*
*
--------------------------------------------------------------
*
*
--------------------------------------------------------------
*
*
| 6 |
7
| |
*
*
--------------------------------------------------------------
*
*
| 0x18 |
0x1c
| |
*
*
--------------------------------------------------------------
*
*
| sbase |
slimit
| |
*
*
--------------------------------------------------------------
*
*
--------------------------------------------------------------
*
*
| 8 |
9
| |
*
*
--------------------------------------------------------------
*
*
| 0x20 |
0x24
| |
*
*
--------------------------------------------------------------
*
*
| fc_mxcsr|fc_x87_cw| |
*
*
--------------------------------------------------------------
*
*
*
*
*****************************************************************/
.
text
.
globl
_jump_fcontext
.
align
2
_jump_fcontext
:
movl
0x4
(%
esp
),
%
ecx
/*
load
address
of
the
first
fcontext_t
arg
*/
movl
%
edi
,
(%
ecx
)
/*
save
EDI
*/
movl
%
esi
,
0x4
(%
ecx
)
/*
save
ESI
*/
movl
%
ebx
,
0x8
(%
ecx
)
/*
save
EBX
*/
movl
%
ebp
,
0xc
(%
ecx
)
/*
save
EBP
*/
leal
0x4
(%
esp
),
%
eax
/*
exclude
the
return
address
*/
movl
%
eax
,
0x10
(%
ecx
)
/*
save
as
stack
pointer
*/
movl
(%
esp
),
%
eax
/*
load
return
address
*/
movl
%
eax
,
0x14
(%
ecx
)
/*
save
return
address
*/
movl
0x8
(%
esp
),
%
edx
/*
load
address
of
the
second
fcontext_t
arg
*/
movl
(%
edx
),
%
edi
/*
restore
EDI
*/
movl
0x4
(%
edx
),
%
esi
/*
restore
ESI
*/
movl
0x8
(%
edx
),
%
ebx
/*
restore
EBX
*/
movl
0xc
(%
edx
),
%
ebp
/*
restore
EBP
*/
movl
0x10
(%
esp
),
%
eax
/*
check
if
fpu
enve
preserving
was
requested
*/
test
%
eax
,
%
eax
je
1
f
stmxcsr
0x20
(%
ecx
)
/*
save
MMX
control
and
status
word
*/
fnstcw
0x24
(%
ecx
)
/*
save
x87
control
word
*/
ldmxcsr
0x20
(%
edx
)
/*
restore
MMX
control
and
status
word
*/
fldcw
0x24
(%
edx
)
/*
restore
x87
control
word
*/
1
:
movl
0xc
(%
esp
),
%
eax
/*
use
third
arg
as
return
value
after
jump
*/
movl
0x10
(%
edx
),
%
esp
/*
restore
ESP
*/
movl
%
eax
,
0x4
(%
esp
)
/*
use
third
arg
as
first
arg
in
context
function
*/
movl
0x14
(%
edx
),
%
edx
/*
fetch
the
address
to
return
to
*/
jmp
*%
edx
/*
indirect
jump
to
context
*/
.
text
.
globl
_make_fcontext
.
align
2
_make_fcontext
:
movl
0x4
(%
esp
),
%
eax
/*
load
address
of
the
fcontext_t
*/
movl
%
eax
,
(%
eax
)
/*
save
the
address
of
current
context
*/
movl
0x8
(%
esp
),
%
ecx
/*
load
the
address
of
the
context
function
*/
movl
%
ecx
,
0x14
(%
eax
)
/*
save
the
address
of
the
context
function
*/
movl
0x18
(%
eax
),
%
edx
/*
load
the
stack
base
*/
pushl
%
eax
/*
save
pointer
to
fcontext_t
*/
pushl
%
ebx
/*
save
EBX
*/
pushl
%
edx
/*
stack
pointer
as
arg
for
align_stack
*/
call
1
f
1
:
popl
%
ebx
/*
address
of
label
1
*/
addl
$
_GLOBAL_OFFSET_TABLE_
+[
.
-
1
b
],
%
ebx
/*
compute
address
of
GOT
and
store
it
in
EBX
*/
call
align_stack
@
PLT
/*
align
stack
*/
movl
%
eax
,
%
edx
/*
begin
of
aligned
stack
*/
popl
%
eax
/*
remove
arg
for
align_stack
*/
popl
%
ebx
/*
restore
EBX
*/
popl
%
eax
/*
restore
pointer
to
fcontext_t
*/
leal
-
0x14
(%
edx
),
%
edx
/*
reserve
space
for
the
last
frame
on
stack
,
(
ESP
+
4
)
%
16
==
0
*/
movl
%
edx
,
0x10
(%
eax
)
/*
save
the
aligned
stack
base
*/
stmxcsr
0x20
(%
eax
)
/*
save
MMX
control
and
status
word
*/
fnstcw
0x24
(%
eax
)
/*
save
x87
control
word
*/
call
2
f
2
:
popl
%
ecx
/*
address
of
label
2
*/
addl
$finish
-
2
b
,
%
ecx
/*
helper
code
executed
after
context
function
returns
*/
movl
%
ecx
,
(%
edx
)
xorl
%
eax
,
%
eax
ret
finish
:
leal
-
0xc
(%
esp
),
%
esp
call
3
f
3
:
popl
%
ebx
/*
address
of
label
3
*/
addl
$
_GLOBAL_OFFSET_TABLE_
+[
.
-
3
b
],
%
ebx
/*
compute
address
of
GOT
and
store
it
in
EBX
*/
xorl
%
eax
,
%
eax
pushl
%
eax
/*
exit
code
is
zero
*/
call
_exit
@
PLT
/*
exit
application
*/
hlt
third_party/boost_context/src/asm/fcontext_mips32_o32_elf_gas.S
0 → 100644
View file @
97724ab7
/*
Copyright
Oliver
Kowalke
2009
.
Distributed
under
the
Boost
Software
License
,
Version
1
.0.
(
See
accompanying
file
LICENSE_1_0
.
txt
or
copy
at
http
://
www.boost.org
/
LICENSE_1_0
.
txt
)
*/
/*******************************************************************
*
*
*
-------------------------------------------------------------
*
*
| 0 |
1
| 2 |
3
| 4 |
5
| 6 |
7
| 8 |
9
|
*
*
-------------------------------------------------------------
*
*
| 0 |
8
| 16 |
24
| 32 |
40
| 48 |
56
| 64 |
72
|
*
*
-------------------------------------------------------------
*
*
| S0 |
S1
| S2 |
S3
| S4 |
S5
| S6 |
S7
| GP |
SP
|
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 10 |
11
| 12 |
|
*
*
-------------------------------------------------------------
*
*
| 80 |
88
| 96 |
|
*
*
-------------------------------------------------------------
*
*
| S8 |
RA
| PC |
|
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 13 |
14
| |
*
*
-------------------------------------------------------------
*
*
| 104 |
112
| |
*
*
-------------------------------------------------------------
*
*
|sbase|slimt| |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 15 |
16
| 17 |
18
| 19 |
20
| |
*
*
-------------------------------------------------------------
*
*
| 120 |
128
| 136 |
144
| 152 |
160
| |
*
*
-------------------------------------------------------------
*
*
| F20 |
F22
| F24 |
F26
| F28 |
F30
| |
*
*
-------------------------------------------------------------
*
*
*
*
*****************************************************************/
.
text
.
globl
jump_fcontext
.
align
2
.
type
jump_fcontext
,@
function
.
ent
jump_fcontext
jump_fcontext
:
sw
$s0
,
(
$a0
)
#
save
S0
sw
$s1
,
8
(
$a0
)
#
save
S1
sw
$s2
,
16
(
$a0
)
#
save
S2
sw
$s3
,
24
(
$a0
)
#
save
S3
sw
$s4
,
32
(
$a0
)
#
save
S4
sw
$s5
,
40
(
$a0
)
#
save
S5
sw
$s6
,
48
(
$a0
)
#
save
S6
sw
$s7
,
56
(
$a0
)
#
save
S7
sw
$gp
,
64
(
$a0
)
#
save
GP
sw
$sp
,
72
(
$a0
)
#
save
SP
sw
$s8
,
80
(
$a0
)
#
save
S8
sw
$ra
,
88
(
$a0
)
#
save
RA
sw
$ra
,
96
(
$a0
)
#
save
RA
as
PC
#if defined(__mips_hard_float)
beqz
$a3
,
1
f
#
test
if
fpu
env
should
be
preserved
s.d
$f20
,
120
(
$a0
)
#
save
F20
s.d
$f22
,
128
(
$a0
)
#
save
F22
s.d
$f24
,
136
(
$a0
)
#
save
F24
s.d
$f26
,
144
(
$a0
)
#
save
F26
s.d
$f28
,
152
(
$a0
)
#
save
F28
s.d
$f30
,
160
(
$a0
)
#
save
F30
l.d
$f20
,
120
(
$a1
)
#
restore
F20
l.d
$f22
,
128
(
$a1
)
#
restore
F22
l.d
$f24
,
136
(
$a1
)
#
restore
F24
l.d
$f26
,
144
(
$a1
)
#
restore
F26
l.d
$f28
,
152
(
$a1
)
#
restore
F28
l.d
$f30
,
160
(
$a1
)
#
restore
F30
1
:
#endif
lw
$s0
,
(
$a1
)
#
restore
S0
lw
$s1
,
8
(
$a1
)
#
restore
S1
lw
$s2
,
16
(
$a1
)
#
restore
S2
lw
$s3
,
24
(
$a1
)
#
restore
S3
lw
$s4
,
32
(
$a1
)
#
restore
S4
lw
$s5
,
40
(
$a1
)
#
restore
S5
lw
$s6
,
48
(
$a1
)
#
restore
S6
lw
$s7
,
56
(
$a1
)
#
restore
S7
lw
$gp
,
64
(
$a1
)
#
restore
GP
lw
$sp
,
72
(
$a1
)
#
restore
SP
lw
$s8
,
80
(
$a1
)
#
restore
S8
lw
$ra
,
88
(
$a1
)
#
restore
RA
move
$a0
,
$s2
#
restore
void
pointer
as
argument
move
$v0
,
$a2
#
use
third
arg
as
return
value
after
jump
move
$a0
,
$a2
#
use
third
arg
as
first
arg
in
context
function
lw
$t9
,
96
(
$a1
)
#
load
PC
jr
$t9
#
jump
to
context
.
end
jump_fcontext
.
size
jump_fcontext
,
.
-
jump_fcontext
.
text
.
globl
make_fcontext
.
align
2
.
type
make_fcontext
,@
function
.
ent
make_fcontext
make_fcontext
:
#ifdef __PIC__
.
set
noreorder
.
cpload
$t9
.
set
reorder
#endif
sw
$a0
,
(
$a0
)
#
save
the
current
context
sw
$gp
,
24
(
$a0
)
#
save
global
pointer
sw
$a1
,
96
(
$a0
)
#
save
the
address
of
the
context
function
lw
$t0
,
104
(
$a0
)
#
load
the
stack
base
sub
$sp
,
$sp
,
28
sw
$ra
,
24
(
$sp
)
sw
$a0
,
20
(
$sp
)
move
$a0
,
$t0
#
stack
pointer
as
arg
for
align_stack
lw
$t9
,
%
call16
(
align_stack
)(
$gp
)
#
align
stack
jalr
$t9
nop
move
$t0
,
$v0
#
begin
of
aligned
stack
lw
$ra
,
24
(
$sp
)
lw
$a0
,
20
(
$sp
)
addi
$sp
,
$sp
,
28
sub
$t0
,
$t0
,
16
#
reserve
16
byte
of
argument
space
sw
$t0
,
72
(
$a0
)
#
save
the
algned
stack
base
la
$t9
,
finish
#
helper
code
executed
after
context
function
returns
sw
$t9
,
88
(
$a0
)
move
$v0
,
$zero
jr
$ra
finish
:
move
$gp
,
$s3
#
restore
GP
(
global
pointer
)
move
$a0
,
$zero
#
exit
code
is
zero
lw
$t9
,
%
call16
(
_exit
)(
$gp
)
#
exit
application
jalr
$t9
.
end
make_fcontext
.
size
make_fcontext
,
.
-
make_fcontext
third_party/boost_context/src/asm/fcontext_ppc32_sysv_elf_gas.S
0 → 100644
View file @
97724ab7
/*
Copyright
Oliver
Kowalke
2009
.
Distributed
under
the
Boost
Software
License
,
Version
1
.0.
(
See
accompanying
file
LICENSE_1_0
.
txt
or
copy
at
http
://
www.boost.org
/
LICENSE_1_0
.
txt
)
*/
/*******************************************************************
*
*
*
-------------------------------------------------------------
*
*
| 0 |
1
| 2 |
3
| 4 |
5
| 6 |
7
| 8 |
9
|
*
*
-------------------------------------------------------------
*
*
| 0 |
4
| 8 |
12
| 16 |
20
| 24 |
28
| 32 |
36
|
*
*
-------------------------------------------------------------
*
*
| R13 |
R14
| R15 |
R16
| R17 |
R18
| R19 |
R20
| R21 |
R22
|
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 10 |
11
| 12 |
13
| 14 |
15
| 16 |
17
| 18 |
19
|
*
*
-------------------------------------------------------------
*
*
| 40 |
44
| 48 |
52
| 56 |
60
| 64 |
68
| 72 |
76
|
*
*
-------------------------------------------------------------
*
*
| R23 |
R24
| R25 |
R26
| R27 |
R28
| R29 |
R30
| R31 |
SP
|
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 20 |
21
| 22 |
|
*
*
-------------------------------------------------------------
*
*
| 80 |
84
| 88 |
|
*
*
-------------------------------------------------------------
*
*
| CR |
LR
| PC |
|
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 23 |
24
| |
*
*
-------------------------------------------------------------
*
*
| 92 |
96
| |
*
*
-------------------------------------------------------------
*
*
|sbase|slimt| |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 25 |
26
| 27 |
28
| 29 |
30
| 31 |
32
| 33 |
34
|
*
*
-------------------------------------------------------------
*
*
| 100 |
104
| 108 |
112
| 116 |
120
| 124 |
128
| 132 |
136
|
*
*
-------------------------------------------------------------
*
*
| F14 |
F15
| F16 |
F17
| F18 |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 35 |
36
| 37 |
38
| 39 |
40
| 41 |
42
| 43 |
44
|
*
*
-------------------------------------------------------------
*
*
| 140 |
144
| 148 |
152
| 156 |
160
| 164 |
168
| 172 |
176
|
*
*
-------------------------------------------------------------
*
*
| F19 |
F20
| F21 |
F22
| F23 |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 45 |
46
| 47 |
48
| 49 |
50
| 51 |
52
| 53 |
54
|
*
*
-------------------------------------------------------------
*
*
| 180 |
184
| 188 |
192
| 196 |
200
| 204 |
208
| 212 |
216
|
*
*
-------------------------------------------------------------
*
*
| F24 |
F25
| F26 |
F27
| F28 |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 55 |
56
| 57 |
58
| 59 |
60
| 61 |
62
| |
*
*
-------------------------------------------------------------
*
*
| 220 |
224
| 228 |
232
| 236 |
240
| 244 |
248
| |
*
*
-------------------------------------------------------------
*
*
| F29 |
F30
| F31 |
fpscr
| |
*
*
-------------------------------------------------------------
*
*
*
*
*****************************************************************/
.
text
.
globl
jump_fcontext
.
align
2
.
type
jump_fcontext
,@
function
jump_fcontext
:
stw
%
r13
,
0
(%
r3
)
#
save
R13
stw
%
r14
,
4
(%
r3
)
#
save
R14
stw
%
r15
,
8
(%
r3
)
#
save
R15
stw
%
r16
,
12
(%
r3
)
#
save
R16
stw
%
r17
,
16
(%
r3
)
#
save
R17
stw
%
r18
,
20
(%
r3
)
#
save
R18
stw
%
r19
,
24
(%
r3
)
#
save
R19
stw
%
r20
,
28
(%
r3
)
#
save
R20
stw
%
r21
,
32
(%
r3
)
#
save
R21
stw
%
r22
,
36
(%
r3
)
#
save
R22
stw
%
r23
,
40
(%
r3
)
#
save
R23
stw
%
r24
,
44
(%
r3
)
#
save
R24
stw
%
r25
,
48
(%
r3
)
#
save
R25
stw
%
r26
,
52
(%
r3
)
#
save
R26
stw
%
r27
,
56
(%
r3
)
#
save
R27
stw
%
r28
,
60
(%
r3
)
#
save
R28
stw
%
r29
,
64
(%
r3
)
#
save
R29
stw
%
r30
,
68
(%
r3
)
#
save
R30
stw
%
r31
,
72
(%
r3
)
#
save
R31
stw
%
r1
,
76
(%
r3
)
#
save
SP
mfcr
%
r0
#
load
CR
stw
%
r0
,
80
(%
r3
)
#
save
CR
mflr
%
r0
#
load
LR
stw
%
r0
,
84
(%
r3
)
#
save
LR
stw
%
r0
,
88
(%
r3
)
#
save
LR
as
PC
cmpwi
cr7
,
%
r6
,
0
#
test
if
fpu
env
should
be
preserved
beq
cr7
,
1
f
stfd
%f14
,
100
(%
r3
)
#
save
F14
stfd
%f15
,
108
(%
r3
)
#
save
F15
stfd
%f16
,
116
(%
r3
)
#
save
F16
stfd
%f17
,
124
(%
r3
)
#
save
F17
stfd
%f18
,
132
(%
r3
)
#
save
F18
stfd
%f19
,
140
(%
r3
)
#
save
F19
stfd
%f20
,
148
(%
r3
)
#
save
F20
stfd
%f21
,
156
(%
r3
)
#
save
F21
stfd
%f22
,
164
(%
r3
)
#
save
F22
stfd
%f23
,
172
(%
r3
)
#
save
F23
stfd
%f24
,
180
(%
r3
)
#
save
F24
stfd
%f25
,
188
(%
r3
)
#
save
F25
stfd
%f26
,
196
(%
r3
)
#
save
F26
stfd
%f27
,
204
(%
r3
)
#
save
F27
stfd
%f28
,
212
(%
r3
)
#
save
F28
stfd
%f29
,
220
(%
r3
)
#
save
F29
stfd
%f30
,
228
(%
r3
)
#
save
F30
stfd
%f31
,
236
(%
r3
)
#
save
F31
mffs
%f0
#
load
FPSCR
stfd
%f0
,
244
(%
r3
)
#
save
FPSCR
lfd
%f14
,
100
(%
r4
)
#
restore
F14
lfd
%f15
,
108
(%
r4
)
#
restore
F15
lfd
%f16
,
116
(%
r4
)
#
restore
F16
lfd
%f17
,
124
(%
r4
)
#
restore
F17
lfd
%f18
,
132
(%
r4
)
#
restore
F18
lfd
%f19
,
140
(%
r4
)
#
restore
F19
lfd
%f20
,
148
(%
r4
)
#
restore
F20
lfd
%f21
,
156
(%
r4
)
#
restore
F21
lfd
%f22
,
164
(%
r4
)
#
restore
F22
lfd
%f23
,
172
(%
r4
)
#
restore
F23
lfd
%f24
,
180
(%
r4
)
#
restore
F24
lfd
%f25
,
188
(%
r4
)
#
restore
F25
lfd
%f26
,
196
(%
r4
)
#
restore
F26
lfd
%f27
,
204
(%
r4
)
#
restore
F27
lfd
%f28
,
212
(%
r4
)
#
restore
F28
lfd
%f29
,
220
(%
r4
)
#
restore
F29
lfd
%f30
,
228
(%
r4
)
#
restore
F30
lfd
%f31
,
236
(%
r4
)
#
restore
F31
lfd
%f0
,
244
(%
r4
)
#
load
FPSCR
mtfsf
0xff
,
%f0
#
restore
FPSCR
1
:
lwz
%
r13
,
0
(%
r4
)
#
restore
R13
lwz
%
r14
,
4
(%
r4
)
#
restore
R14
lwz
%
r15
,
8
(%
r4
)
#
restore
R15
lwz
%
r16
,
12
(%
r4
)
#
restore
R16
lwz
%
r17
,
16
(%
r4
)
#
restore
R17
lwz
%
r18
,
20
(%
r4
)
#
restore
R18
lwz
%
r19
,
24
(%
r4
)
#
restore
R19
lwz
%
r20
,
28
(%
r4
)
#
restore
R20
lwz
%
r21
,
32
(%
r4
)
#
restore
R21
lwz
%
r22
,
36
(%
r4
)
#
restore
R22
lwz
%
r23
,
40
(%
r4
)
#
restore
R23
lwz
%
r24
,
44
(%
r4
)
#
restore
R24
lwz
%
r25
,
48
(%
r4
)
#
restore
R25
lwz
%
r26
,
52
(%
r4
)
#
restore
R26
lwz
%
r27
,
56
(%
r4
)
#
restore
R27
lwz
%
r28
,
60
(%
r4
)
#
restore
R28
lwz
%
r29
,
64
(%
r4
)
#
restore
R29
lwz
%
r30
,
68
(%
r4
)
#
restore
R30
lwz
%
r31
,
72
(%
r4
)
#
restore
R31
lwz
%
r1
,
76
(%
r4
)
#
restore
SP
lwz
%
r0
,
80
(%
r4
)
#
load
CR
mtcr
%
r0
#
restore
CR
lwz
%
r0
,
84
(%
r4
)
#
load
LR
mtlr
%
r0
#
restore
LR
mr
.
%
r3
,
%
r5
#
use
third
arg
as
return
value
after
jump
#
and
as
first
arg
in
context
function
lwz
%
r0
,
88
(%
r4
)
#
load
PC
mtctr
%
r0
#
restore
CTR
bctr
#
jump
to
context
.
size
jump_fcontext
,
.
-
jump_fcontext
.
text
.
globl
make_fcontext
.
align
2
.
type
make_fcontext
,@
function
make_fcontext
:
stw
%
r3
,
0
(%
r3
)
#
save
the
current
context
stw
%
r4
,
88
(%
r3
)
#
save
the
address
of
the
context
function
lwz
%
r0
,
92
(%
r3
)
#
load
the
stack
base
li
%
r4
,
28
subf
%
r1
,
%
r4
,
%
r1
#
reserve
space
on
stack
stw
%
r3
,
24
(%
r1
)
#
store
pointer
to
fcontext_t
on
stack
mflr
%
r4
#
load
LR
stw
%
r4
,
20
(%
r1
)
#
store
LR
on
stack
mr
.
%
r3
,
%
r0
#
context
stack
as
arg
to
align_stack
bl
align_stack
@
plt
#
call
align_stack
mr
.
%
r0
,
%
r3
#
load
result
into
R0
lwz
%
r4
,
20
(%
r1
)
#
pop
LR
from
stack
mtlr
%
r4
#
restore
LR
lwz
%
r3
,
24
(%
r1
)
#
pop
pointer
to
fcontext_t
from
stack
addi
%
r1
,
%
r1
,
28
#
release
space
on
stack
li
%
r4
,
32
subf
%
r0
,
%
r4
,
%
r0
#
32
bytes
on
stack
for
parameter
area
(==
8
registers
)
stw
%
r0
,
76
(%
r3
)
#
save
the
aligned
stack
base
mflr
%
r0
#
load
LR
bl
1
f
#
jump
to
label
1
1
:
mflr
%
r4
#
load
LR
addi
%
r4
,
%
r4
,
finish
-
1
b
#
address
of
finish
; called after context function returns
mtlr
%
r0
#
restore
LR
stw
%
r4
,
84
(%
r3
)
li
%
r3
,
0
blr
finish
:
li
%
r3
,
0
#
exit
code
is
zero
bl
_exit
@
plt
#
exit
application
.
size
make_fcontext
,
.
-
make_fcontext
third_party/boost_context/src/asm/fcontext_ppc64_sysv_elf_gas.S
0 → 100644
View file @
97724ab7
/*
Copyright
Oliver
Kowalke
2009
.
Distributed
under
the
Boost
Software
License
,
Version
1
.0.
(
See
accompanying
file
LICENSE_1_0
.
txt
or
copy
at
http
://
www.boost.org
/
LICENSE_1_0
.
txt
)
*/
/*******************************************************************
*
*
*
-------------------------------------------------------------
*
*
| 0 |
1
| 2 |
3
| 4 |
5
| 6 |
7
| 8 |
9
|
*
*
-------------------------------------------------------------
*
*
| 0 |
4
| 8 |
12
| 16 |
20
| 24 |
28
| 32 |
36
|
*
*
-------------------------------------------------------------
*
*
| R13 |
R14
| R15 |
R16
| R17 |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 10 |
11
| 12 |
13
| 14 |
15
| 16 |
17
| 18 |
19
|
*
*
-------------------------------------------------------------
*
*
| 40 |
44
| 48 |
52
| 56 |
60
| 64 |
68
| 72 |
76
|
*
*
-------------------------------------------------------------
*
*
| R18 |
R19
| R20 |
R21
| R22 |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 20 |
21
| 22 |
23
| 24 |
25
| 26 |
27
| 28 |
29
|
*
*
-------------------------------------------------------------
*
*
| 80 |
84
| 88 |
92
| 96 |
100
| 104 |
108
| 112 |
116
|
*
*
-------------------------------------------------------------
*
*
| R23 |
R24
| R25 |
R26
| R27 |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 30 |
31
| 32 |
33
| 34 |
35
| 36 |
37
| 38 |
39
|
*
*
-------------------------------------------------------------
*
*
| 120 |
124
| 128 |
132
| 136 |
140
| 144 |
148
| 152 |
156
|
*
*
-------------------------------------------------------------
*
*
| R28 |
R29
| R30 |
R31
| SP |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 40 |
41
| 42 |
43
| 44 |
45
| |
*
*
-------------------------------------------------------------
*
*
| 160 |
164
| 168 |
172
| 176 |
180
| |
*
*
-------------------------------------------------------------
*
*
| CR |
LR
| PC |
|
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 46 |
47
| 48 |
49
| |
*
*
-------------------------------------------------------------
*
*
| 184 |
188
| 192 |
196
| |
*
*
-------------------------------------------------------------
*
*
| sbase |
slimt
| |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 50 |
51
| 52 |
53
| 54 |
55
| 56 |
57
| 58 |
59
|
*
*
-------------------------------------------------------------
*
*
| 200 |
204
| 208 |
212
| 216 |
220
| 224 |
228
| 232 |
236
|
*
*
-------------------------------------------------------------
*
*
| F14 |
F15
| F16 |
F17
| F18 |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 60 |
61
| 62 |
63
| 64 |
65
| 66 |
67
| 68 |
69
|
*
*
-------------------------------------------------------------
*
*
| 240 |
244
| 248 |
252
| 256 |
260
| 264 |
268
| 272 |
276
|
*
*
-------------------------------------------------------------
*
*
| F19 |
F20
| F21 |
F22
| F23 |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 70 |
71
| 72 |
73
| 74 |
75
| 76 |
77
| 78 |
79
|
*
*
-------------------------------------------------------------
*
*
| 280 |
284
| 288 |
292
| 296 |
300
| 304 |
308
| 312 |
316
|
*
*
-------------------------------------------------------------
*
*
| F24 |
F25
| F26 |
F27
| F28 |
*
*
-------------------------------------------------------------
*
*
-------------------------------------------------------------
*
*
| 80 |
81
| 82 |
83
| 84 |
85
| 86 |
87
| |
*
*
-------------------------------------------------------------
*
*
| 320 |
324
| 328 |
332
| 336 |
340
| 344 |
348
| |
*
*
-------------------------------------------------------------
*
*
| F29 |
F30
| F31 |
fpscr
| |
*
*
-------------------------------------------------------------
*
*
*
*
*****************************************************************/
.
section
".
text
"
.
align
2
.
globl
jump_fcontext
.
section
".
opd
","
aw
"
.
align
3
jump_fcontext
:
.
quad
.
jump_fcontext
,.
TOC
.@
tocbase
,0
.
previous
.
size
jump_fcontext
,24
.
type
.
jump_fcontext
,@
function
.
globl
.
jump_fcontext
.
jump_fcontext
:
std
%
r13
,
0
(%
r3
)
#
save
R13
std
%
r14
,
8
(%
r3
)
#
save
R14
std
%
r15
,
16
(%
r3
)
#
save
R15
std
%
r16
,
24
(%
r3
)
#
save
R16
std
%
r17
,
32
(%
r3
)
#
save
R17
std
%
r18
,
40
(%
r3
)
#
save
R18
std
%
r19
,
48
(%
r3
)
#
save
R19
std
%
r20
,
56
(%
r3
)
#
save
R20
std
%
r21
,
64
(%
r3
)
#
save
R21
std
%
r22
,
72
(%
r3
)
#
save
R22
std
%
r23
,
80
(%
r3
)
#
save
R23
std
%
r24
,
88
(%
r3
)
#
save
R24
std
%
r25
,
96
(%
r3
)
#
save
R25
std
%
r26
,
104
(%
r3
)
#
save
R26
std
%
r27
,
112
(%
r3
)
#
save
R27
std
%
r28
,
120
(%
r3
)
#
save
R28
std
%
r29
,
128
(%
r3
)
#
save
R29
std
%
r30
,
136
(%
r3
)
#
save
R30
std
%
r31
,
144
(%
r3
)
#
save
R31
std
%
r1
,
152
(%
r3
)
#
save
SP
mfcr
%
r0
#
load
CR
std
%
r0
,
160
(%
r3
)
#
save
CR
mflr
%
r0
#
load
LR
std
%
r0
,
168
(%
r3
)
#
save
LR
std
%
r0
,
176
(%
r3
)
#
save
LR
as
PC
cmpwi
cr7
,
%
r6
,
0
#
test
if
fpu
env
should
be
preserved
beq
cr7
,
1
f
stfd
%f14
,
200
(%
r3
)
#
save
F14
stfd
%f15
,
208
(%
r3
)
#
save
F15
stfd
%f16
,
216
(%
r3
)
#
save
F16
stfd
%f17
,
224
(%
r3
)
#
save
F17
stfd
%f18
,
232
(%
r3
)
#
save
F18
stfd
%f19
,
240
(%
r3
)
#
save
F19
stfd
%f20
,
248
(%
r3
)
#
save
F20
stfd
%f21
,
256
(%
r3
)
#
save
F21
stfd
%f22
,
264
(%
r3
)
#
save
F22
stfd
%f23
,
272
(%
r3
)
#
save
F23
stfd
%f24
,
280
(%
r3
)
#
save
F24
stfd
%f25
,
288
(%
r3
)
#
save
F25
stfd
%f26
,
296
(%
r3
)
#
save
F26
stfd
%f27
,
304
(%
r3
)
#
save
F27
stfd
%f28
,
312
(%
r3
)
#
save
F28
stfd
%f29
,
320
(%
r3
)
#
save
F29
stfd
%f30
,
328
(%
r3
)
#
save
F30
stfd
%f31
,
336
(%
r3
)
#
save
F31
mffs
%f0
#
load
FPSCR
stfd
%f0
,
344
(%
r3
)
#
save
FPSCR
lfd
%f14
,
200
(%
r4
)
#
restore
F14
lfd
%f15
,
208
(%
r4
)
#
restore
F15
lfd
%f16
,
216
(%
r4
)
#
restore
F16
lfd
%f17
,
224
(%
r4
)
#
restore
F17
lfd
%f18
,
232
(%
r4
)
#
restore
F18
lfd
%f19
,
240
(%
r4
)
#
restore
F19
lfd
%f20
,
248
(%
r4
)
#
restore
F20
lfd
%f21
,
256
(%
r4
)
#
restore
F21
lfd
%f22
,
264
(%
r4
)
#
restore
F22
lfd
%f23
,
272
(%
r4
)
#
restore
F23
lfd
%f24
,
280
(%
r4
)
#
restore
F24
lfd
%f25
,
288
(%
r4
)
#
restore
F25
lfd
%f26
,
296
(%
r4
)
#
restore
F26
lfd
%f27
,
304
(%
r4
)
#
restore
F27
lfd
%f28
,
312
(%
r4
)
#
restore
F28
lfd
%f29
,
320
(%
r4
)
#
restore
F29
lfd
%f30
,
328
(%
r4
)
#
restore
F30
lfd
%f31
,
336
(%
r4
)
#
restore
F31
lfd
%f0
,
344
(%
r4
)
#
load
FPSCR
mtfsf
0xff
,
%f0
#
restore
FPSCR
1
:
ld
%
r13
,
0
(%
r4
)
#
restore
R13
ld
%
r14
,
8
(%
r4
)
#
restore
R14
ld
%
r15
,
16
(%
r4
)
#
restore
R15
ld
%
r16
,
24
(%
r4
)
#
restore
R16
ld
%
r17
,
32
(%
r4
)
#
restore
R17
ld
%
r18
,
40
(%
r4
)
#
restore
R18
ld
%
r19
,
48
(%
r4
)
#
restore
R19
ld
%
r20
,
56
(%
r4
)
#
restore
R20
ld
%
r21
,
64
(%
r4
)
#
restore
R21
ld
%
r22
,
72
(%
r4
)
#
restore
R22
ld
%
r23
,
80
(%
r4
)
#
restore
R23
ld
%
r24
,
88
(%
r4
)
#
restore
R24
ld
%
r25
,
96
(%
r4
)
#
restore
R25
ld
%
r26
,
104
(%
r4
)
#
restore
R26
ld
%
r27
,
112
(%
r4
)
#
restore
R27
ld
%
r28
,
120
(%
r4
)
#
restore
R28
ld
%
r29
,
128
(%
r4
)
#
restore
R29
ld
%
r30
,
136
(%
r4
)
#
restore
r30
ld
%
r31
,
144
(%
r4
)
#
restore
r31
ld
%
r1
,
152
(%
r4
)
#
restore
SP
ld
%
r0
,
160
(%
r4
)
#
load
CR
mtcr
%
r0
#
restore
CR
ld
%
r0
,
168
(%
r4
)
#
load
LR
mtlr
%
r0
#
restore
LR
mr
.
%
r3
,
%
r5
#
use
third
arg
as
return
value
after
jump
#
and
as
first
arg
in
context
function
ld
%
r0
,
176
(%
r4
)
#
load
PC
mtctr
%
r0
#
restore
CTR
bctr
#
jump
to
context
.
size
.
jump_fcontext
,
.
-
.
jump_fcontext
.
section
".
text
"
.
align
2
.
globl
make_fcontext
.
section
".
opd
","
aw
"
.
align
3
make_fcontext
:
.
quad
.
make_fcontext
,.
TOC
.@
tocbase
,0
.
previous
.
size
make_fcontext
,24
.
type
.
make_fcontext
,@
function
.
globl
.
make_fcontext
.
make_fcontext
:
std
%
r3
,
0
(%
r3
)
#
save
the
current
context
std
%
r4
,
176
(%
r3
)
#
save
the
address
of
the
function
supposed
to
be
run
ld
%
r0
,
184
(%
r3
)
#
load
the
stack
base
li
%
r4
,
56
subf
%
r1
,
%
r4
,
%
r1
#
reserve
space
on
stack
stw
%
r3
,
48
(%
r1
)
#
store
pointer
to
fcontext_t
on
stack
mflr
%
r4
#
load
LR
stw
%
r4
,
40
(%
r1
)
#
store
LR
on
stack
mr
.
%
r3
,
%
r0
#
context
stack
as
arg
to
align_stack
bl
align_stack
@
plt
#
call
align_stack
mr
.
%
r0
,
%
r3
#
load
result
into
R0
lwz
%
r4
,
40
(%
r1
)
#
pop
LR
from
stack
mtlr
%
r4
#
restore
LR
lwz
%
r3
,
48
(%
r1
)
#
pop
pointer
to
fcontext_t
from
stack
addi
%
r1
,
%
r1
,
56
#
release
space
on
stack
li
%
r4
,
64
subf
%
r0
,
%
r4
,
%
r0
#
64
bytes
on
stack
for
parameter
area
(==
8
registers
)
std
%
r0
,
152
(%
r3
)
#
save
the
stack
base
mflr
%
r0
#
load
LR
bl
1
f
#
jump
to
label
1
1
:
mflr
%
r4
#
load
LR
addi
%
r4
,
%
r4
,
finish
-
1
b
#
calulate
absolute
address
of
finish
mtlr
%
r0
#
restore
LR
std
%
r4
,
168
(%
r3
)
#
save
address
of
finish
li
%
r3
,
0
#
set
return
value
to
zero
blr
finish
:
li
%
r3
,
0
#
set
return
value
to
zero
bl
_exit
@
plt
#
exit
application
.
size
.
make_fcontext
,
.
-
.
make_fcontext
third_party/boost_context/src/asm/fcontext_x86_64_sysv_elf_gas.S
0 → 100644
View file @
97724ab7
/*
Copyright
Oliver
Kowalke
2009
.
Distributed
under
the
Boost
Software
License
,
Version
1
.0.
(
See
accompanying
file
LICENSE_1_0
.
txt
or
copy
at
http
://
www.boost.org
/
LICENSE_1_0
.
txt
)
*/
/****************************************************************************************
*
*
*
----------------------------------------------------------------------------------
*
*
| 0 |
1
| 2 |
3
| 4 |
5
| 6 |
7
|
*
*
----------------------------------------------------------------------------------
*
*
| 0x0 |
0x4
| 0x8 |
0xc
| 0x10 |
0x14
| 0x18 |
0x1c
|
*
*
----------------------------------------------------------------------------------
*
*
| RBX |
R12
| R13 |
R14
|
*
*
----------------------------------------------------------------------------------
*
*
----------------------------------------------------------------------------------
*
*
| 8 |
9
| 10 |
11
| 12 |
13
| 14 |
15
|
*
*
----------------------------------------------------------------------------------
*
*
| 0x20 |
0x24
| 0x28 |
0x2c
| 0x30 |
0x34
| 0x38 |
0x3c
|
*
*
----------------------------------------------------------------------------------
*
*
| R15 |
RBP
| RSP |
RIP
|
*
*
----------------------------------------------------------------------------------
*
*
----------------------------------------------------------------------------------
*
*
| 16 |
17
| 18 |
19
| |
*
*
----------------------------------------------------------------------------------
*
*
| 0x40 |
0x44
| 0x48 |
0x4c
| |
*
*
----------------------------------------------------------------------------------
*
*
| sbase |
slimit
| |
*
*
----------------------------------------------------------------------------------
*
*
----------------------------------------------------------------------------------
*
*
| 20 |
21
| |
*
*
----------------------------------------------------------------------------------
*
*
| 0x50 |
0x54
| |
*
*
----------------------------------------------------------------------------------
*
*
| fc_mxcsr|fc_x87_cw| |
*
*
----------------------------------------------------------------------------------
*
*
*
*
**************************************************************************************/
.
text
.
globl
jump_fcontext
.
type
jump_fcontext
,@
function
.
align
16
jump_fcontext
:
movq
%
rbx
,
(%
rdi
)
/*
save
RBX
*/
movq
%
r12
,
0x8
(%
rdi
)
/*
save
R12
*/
movq
%
r13
,
0x10
(%
rdi
)
/*
save
R13
*/
movq
%
r14
,
0x18
(%
rdi
)
/*
save
R14
*/
movq
%
r15
,
0x20
(%
rdi
)
/*
save
R15
*/
movq
%
rbp
,
0x28
(%
rdi
)
/*
save
RBP
*/
cmp
$
0
,
%
rcx
je
1
f
stmxcsr
0x50
(%
rdi
)
/*
save
MMX
control
and
status
word
*/
fnstcw
0x54
(%
rdi
)
/*
save
x87
control
word
*/
ldmxcsr
0x50
(%
rsi
)
/*
restore
MMX
control
and
status
word
*/
fldcw
0x54
(%
rsi
)
/*
restore
x87
control
word
*/
1
:
leaq
0x8
(%
rsp
),
%
rax
/*
exclude
the
return
address
and
save
as
stack
pointer
*/
movq
%
rax
,
0x30
(%
rdi
)
/*
save
as
stack
pointer
*/
movq
(%
rsp
),
%
rax
/*
save
return
address
*/
movq
%
rax
,
0x38
(%
rdi
)
/*
save
return
address
as
RIP
*/
movq
(%
rsi
),
%
rbx
/*
restore
RBX
*/
movq
0x8
(%
rsi
),
%
r12
/*
restore
R12
*/
movq
0x10
(%
rsi
),
%
r13
/*
restore
R13
*/
movq
0x18
(%
rsi
),
%
r14
/*
restore
R14
*/
movq
0x20
(%
rsi
),
%
r15
/*
restore
R15
*/
movq
0x28
(%
rsi
),
%
rbp
/*
restore
RBP
*/
movq
0x30
(%
rsi
),
%
rsp
/*
restore
RSP
*/
movq
0x38
(%
rsi
),
%
rcx
/*
fetch
the
address
to
return
to
*/
movq
%
rdx
,
%
rax
/*
use
third
arg
as
return
value
after
jump
*/
movq
%
rdx
,
%
rdi
/*
use
third
arg
as
first
arg
in
context
function
*/
jmp
*%
rcx
/*
indirect
jump
to
context
*/
.
size
jump_fcontext
,.-
jump_fcontext
.
text
.
globl
make_fcontext
.
type
make_fcontext
,@
function
.
align
16
make_fcontext
:
movq
%
rdi
,
(%
rdi
)
/*
save
the
address
of
passed
context
*/
movq
%
rsi
,
0x38
(%
rdi
)
/*
save
the
address
of
the
context
function
*/
movq
0x40
(%
rdi
),
%
rdx
/*
load
the
stack
base
*/
pushq
%
rdi
/*
save
pointer
to
fcontext_t
*/
movq
%
rdx
,
%
rdi
/*
stack
pointer
as
arg
for
align_stack
*/
call
align_stack
@
PLT
/*
align
stack
*/
movq
%
rax
,
%
rdx
/*
begin
of
aligned
stack
*/
popq
%
rdi
/*
restore
pointer
to
fcontext_t
*/
leaq
-
0x8
(%
rdx
),
%
rdx
/*
reserve
space
for
the
last
frame
on
stack
,
(
RSP
+
8
)
&
15
==
0
*/
movq
%
rdx
,
0x30
(%
rdi
)
/*
save
the
algined
stack
base
*/
stmxcsr
0x50
(%
rdi
)
/*
save
MMX
control
and
status
word
*/
fnstcw
0x54
(%
rdi
)
/*
save
x87
control
word
*/
leaq
finish
(%
rip
),
%
rcx
/*
address
of
finish
; called after context function returns */
movq
%
rcx
,
(%
rdx
)
xorq
%
rax
,
%
rax
ret
finish
:
xorq
%
rdi
,
%
rdi
/*
exit
code
is
zero
*/
call
_exit
@
PLT
/*
exit
application
*/
hlt
.
size
make_fcontext
,.-
make_fcontext
third_party/boost_context/src/asm/fcontext_x86_64_sysv_macho_gas.s
0 → 100644
View file @
97724ab7
/*
Copyright
Oliver
Kowalke
2009
.
Distributed
under
the
Boost
Software
License
,
Version
1
.0.
(
See
accompanying
file
LICENSE_1_0
.
txt
or
copy
at
http
://
www.boost.org
/
LICENSE_1_0
.
txt
)
*/
/****************************************************************************************
*
*
*
----------------------------------------------------------------------------------
*
*
| 0 |
1
| 2 |
3
| 4 |
5
| 6 |
7
|
*
*
----------------------------------------------------------------------------------
*
*
| 0x0 |
0x4
| 0x8 |
0xc
| 0x10 |
0x14
| 0x18 |
0x1c
|
*
*
----------------------------------------------------------------------------------
*
*
| RBX |
R12
| R13 |
R14
|
*
*
----------------------------------------------------------------------------------
*
*
----------------------------------------------------------------------------------
*
*
| 8 |
9
| 10 |
11
| 12 |
13
| 14 |
15
|
*
*
----------------------------------------------------------------------------------
*
*
| 0x20 |
0x24
| 0x28 |
0x2c
| 0x30 |
0x34
| 0x38 |
0x3c
|
*
*
----------------------------------------------------------------------------------
*
*
| R15 |
RBP
| RSP |
RIP
|
*
*
----------------------------------------------------------------------------------
*
*
----------------------------------------------------------------------------------
*
*
| 16 |
17
| 18 |
19
| |
*
*
----------------------------------------------------------------------------------
*
*
| 0x40 |
0x44
| 0x48 |
0x4c
| |
*
*
----------------------------------------------------------------------------------
*
*
| sbase |
slimit
| |
*
*
----------------------------------------------------------------------------------
*
*
----------------------------------------------------------------------------------
*
*
| 20 |
21
| |
*
*
----------------------------------------------------------------------------------
*
*
| 0x50 |
0x54
| |
*
*
----------------------------------------------------------------------------------
*
*
| fc_mxcsr|fc_x87_cw| |
*
*
----------------------------------------------------------------------------------
*
*
*
*
**************************************************************************************/
.
text
.
globl
_jump_fcontext
.
align
8
_jump_fcontext
:
movq
%
rbx
,
(%
rdi
)
/*
save
RBX
*/
movq
%
r12
,
0x8
(%
rdi
)
/*
save
R12
*/
movq
%
r13
,
0x10
(%
rdi
)
/*
save
R13
*/
movq
%
r14
,
0x18
(%
rdi
)
/*
save
R14
*/
movq
%
r15
,
0x20
(%
rdi
)
/*
save
R15
*/
movq
%
rbp
,
0x28
(%
rdi
)
/*
save
RBP
*/
cmp
$
0
,
%
rcx
je
1
f
stmxcsr
0x50
(%
rdi
)
/*
save
MMX
control
and
status
word
*/
fnstcw
0x54
(%
rdi
)
/*
save
x87
control
word
*/
ldmxcsr
0x50
(%
rsi
)
/*
restore
MMX
control
and
status
word
*/
fldcw
0x54
(%
rsi
)
/*
restore
x87
control
word
*/
1
:
leaq
0x8
(%
rsp
),
%
rax
/*
exclude
the
return
address
and
save
as
stack
pointer
*/
movq
%
rax
,
0x30
(%
rdi
)
/*
save
as
stack
pointer
*/
movq
(%
rsp
),
%
rax
/*
save
return
address
*/
movq
%
rax
,
0x38
(%
rdi
)
/*
save
return
address
as
RIP
*/
movq
(%
rsi
),
%
rbx
/*
restore
RBX
*/
movq
0x8
(%
rsi
),
%
r12
/*
restore
R12
*/
movq
0x10
(%
rsi
),
%
r13
/*
restore
R13
*/
movq
0x18
(%
rsi
),
%
r14
/*
restore
R14
*/
movq
0x20
(%
rsi
),
%
r15
/*
restore
R15
*/
movq
0x28
(%
rsi
),
%
rbp
/*
restore
RBP
*/
movq
0x30
(%
rsi
),
%
rsp
/*
restore
RSP
*/
movq
0x38
(%
rsi
),
%
rcx
/*
fetch
the
address
to
return
to
*/
movq
%
rdx
,
%
rax
/*
use
third
arg
as
return
value
after
jump
*/
movq
%
rdx
,
%
rdi
/*
use
third
arg
as
first
arg
in
context
function
*/
jmp
*%
rcx
/*
indirect
jump
to
context
*/
.
text
.
globl
_make_fcontext
.
align
8
_make_fcontext
:
movq
%
rdi
,
(%
rdi
)
/*
save
the
address
of
current
context
*/
movq
%
rsi
,
0x38
(%
rdi
)
/*
save
the
address
of
the
function
supposed
to
run
*/
movq
0x40
(%
rdi
),
%
rdx
/*
load
the
stack
base
*/
pushq
%
rdi
/*
save
pointer
to
fcontext_t
*/
movq
%
rdx
,
%
rdi
/*
stack
pointer
as
arg
for
align_stack
*/
call
_align_stack
/*
align
stack
*/
//
call
align_stack
@
PLT
/*
align
stack
*/
movq
%
rax
,
%
rdx
/*
begin
of
aligned
stack
*/
popq
%
rdi
/*
restore
pointer
to
fcontext_t
*/
leaq
-
0x8
(%
rdx
),
%
rdx
/*
reserve
space
for
the
last
frame
on
stack
,
(
RSP
+
8
)
%
16
==
0
*/
movq
%
rdx
,
0x30
(%
rdi
)
/*
save
the
address
*/
stmxcsr
0x50
(%
rdi
)
/*
save
MMX
control
and
status
word
*/
fnstcw
0x54
(%
rdi
)
/*
save
x87
control
word
*/
leaq
finish
(%
rip
),
%
rcx
/*
helper
code
executed
after
context
function
returns
*/
movq
%
rcx
,
(%
rdx
)
xorq
%
rax
,
%
rax
/*
set
RAX
to
zero
*/
ret
finish
:
xorq
%
rdi
,
%
rdi
/*
exit
code
is
zero
*/
//
call
_exit
@
PLT
/*
exit
application
*/
call
_exit
/*
exit
application
*/
hlt
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment