Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
6f15f698
Commit
6f15f698
authored
Dec 07, 2001
by
Turly O'Connor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* darwin-tramp.asm: New file, implements __trampoline_setup.
From-SVN: r47760
parent
4dabc42d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
131 additions
and
0 deletions
+131
-0
gcc/config/rs6000/darwin-tramp.asm
+131
-0
No files found.
gcc/config/rs6000/darwin-tramp.asm
0 → 100644
View file @
6f15f698
/*
Special
support
for
trampolines
*
*
Copyright
(
C
)
1996
,
1997
,
2000
Free
Software
Foundation
,
Inc
.
*
Written
By
Michael
Meissner
*
*
This
file
is
free
software
; you can redistribute it and/or modify it
*
under
the
terms
of
the
GNU
General
Public
License
as
published
by
the
*
Free
Software
Foundation
; either version 2, or (at your option) any
*
later
version
.
*
*
In
addition
to
the
permissions
in
the
GNU
General
Public
License
,
the
*
Free
Software
Foundation
gives
you
unlimited
permission
to
link
the
*
compiled
version
of
this
file
with
other
programs
,
and
to
distribute
*
those
programs
without
any
restriction
coming
from
the
use
of
this
*
file
.
(
The
General
Public
License
restrictions
do
apply
in
other
*
respects
; for example, they cover modification of the file, and
*
distribution
when
not
linked
into
another
program
.)
*
*
This
file
is
distributed
in
the
hope
that
it
will
be
useful
,
but
*
WITHOUT
ANY
WARRANTY
; without even the implied warranty of
*
MERCHANTABILITY
or
FITNESS
FOR
A
PARTICULAR
PURPOSE
.
See
the
GNU
*
General
Public
License
for
more
details
.
*
*
You
should
have
received
a
copy
of
the
GNU
General
Public
License
*
along
with
this
program
; see the file COPYING. If not, write to
*
the
Free
Software
Foundation
,
59
Temple
Place
-
Suite
330
,
*
Boston
,
MA
02111
-
1307
,
USA
.
*
*
As
a
special
exception
,
if
you
link
this
library
with
files
*
compiled
with
GCC
to
produce
an
executable
,
this
does
not
cause
the
*
resulting
executable
to
be
covered
by
the
GNU
General
Public
License
.
*
This
exception
does
not
however
invalidate
any
other
reasons
why
the
*
executable
file
might
be
covered
by
the
GNU
General
Public
License
.
*/
/*
Set
up
trampolines
.
*/
.
text
.
align
2
Ltrampoline_initial
:
mflr
r0
bl
1
f
Lfunc
=
.
-
Ltrampoline_initial
.
long
0
/*
will
be
replaced
with
function
address
*/
Lchain
=
.
-
Ltrampoline_initial
.
long
0
/*
will
be
replaced
with
static
chain
*/
1
:
mflr
r11
lwz
r12
,
0
(
r11
)
/*
function
address
*/
mtlr
r0
mtctr
r12
lwz
r11
,
4
(
r11
)
/*
static
chain
*/
bctr
trampoline_size
=
.
-
Ltrampoline_initial
/*
R3
=
stack
address
to
store
trampoline
*/
/*
R4
=
length
of
trampoline
area
*/
/*
R5
=
function
address
*/
/*
R6
=
static
chain
*/
.
globl
___trampoline_setup
___trampoline_setup
:
mflr
r0
/*
save
return
address
*/
bcl
20
,
31
,
LCF0
/*
load
up
__trampoline_initial
into
r7
*/
LCF0
:
mflr
r11
addi
r7
,
r11
,
ha16
(
LTRAMP
-
LCF0
)
lwz
r7
,
lo16
(
LTRAMP
-
LCF0
)(
r7
)
subi
r7
,
r7
,
4
li
r8
,
trampoline_size
/*
verify
trampoline
big
enough
*/
cmpw
cr1
,
r8
,
r4
srwi
r4
,
r4
,
2
/*
#
words
to
move
*/
addi
r9
,
r3
,
-
4
/*
adjust
pointer
for
lwzu
*/
mtctr
r4
blt
cr1
,
Labort
mtlr
r0
/*
Copy
the
instructions
to
the
stack
*/
Lmove
:
lwzu
r10
,
4
(
r7
)
stwu
r10
,
4
(
r9
)
bdnz
Lmove
/*
Store
correct
function
and
static
chain
*/
stw
r5
,
Lfunc
(
r3
)
stw
r6
,
Lchain
(
r3
)
/*
Now
flush
both
caches
*/
mtctr
r4
Lcache
:
icbi
0
,
r3
dcbf
0
,
r3
addi
r3
,
r3
,
4
bdnz
Lcache
/*
Finally
synchronize
things
&
return
*/
sync
isync
blr
Labort
:
#
ifdef
__DYNAMIC__
bl
L_abort
$
stub
.
data
.
picsymbol_stub
L_abort
$
stub
:
.
indirect_symbol
_abort
mflr
r0
bcl
20
,
31
,
L0
$
_abort
L0
$
_abort
:
mflr
r11
addis
r11
,
r11
,
ha16
(
L_abort
$
lazy_ptr
-
L0
$
_abort
)
mtlr
r0
lwz
r12
,
lo16
(
L_abort
$
lazy_ptr
-
L0
$
_abort
)(
r11
)
mtctr
r12
addi
r11
,
r11
,
lo16
(
L_abort
$
lazy_ptr
-
L0
$
_abort
)
bctr
.
data
.
lazy_symbol_pointer
L_abort
$
lazy_ptr
:
.
indirect_symbol
_abort
.
long
dyld_stub_binding_helper
#
else
bl
_abort
#
endif
.
data
.
align
2
LTRAMP
:
.
long
Ltrampoline_initial
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