aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/lib/milli/dyncall.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/parisc/lib/milli/dyncall.S')
-rw-r--r--arch/parisc/lib/milli/dyncall.S32
1 files changed, 32 insertions, 0 deletions
diff --git a/arch/parisc/lib/milli/dyncall.S b/arch/parisc/lib/milli/dyncall.S
new file mode 100644
index 000000000000..27f9ca558d0a
--- /dev/null
+++ b/arch/parisc/lib/milli/dyncall.S
@@ -0,0 +1,32 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#include "milli.h"
14
15#ifdef L_dyncall
16 SUBSPA_MILLI
17 ATTR_DATA
18GSYM($$dyncall)
19 .export $$dyncall,millicode
20 .proc
21 .callinfo millicode
22 .entry
23 bb,>=,n %r22,30,LREF(1) ; branch if not plabel address
24 depi 0,31,2,%r22 ; clear the two least significant bits
25 ldw 4(%r22),%r19 ; load new LTP value
26 ldw 0(%r22),%r22 ; load address of target
27LSYM(1)
28 bv %r0(%r22) ; branch to the real target
29 stw %r2,-24(%r30) ; save return address into frame marker
30 .exit
31 .procend
32#endif