Merge remote-tracking branches 'asoc/fix/rt5640' and 'asoc/fix/wm8962' into asoc...
[deliverable/linux.git] / arch / sh / lib / ashrsi3.S
CommitLineData
1aad54a9
PM
1/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2 2004, 2005, 2006
3 Free Software Foundation, Inc.
4
5This file is free software; you can redistribute it and/or modify it
6under the terms of the GNU General Public License as published by the
7Free Software Foundation; either version 2, or (at your option) any
8later version.
9
10In addition to the permissions in the GNU General Public License, the
11Free Software Foundation gives you unlimited permission to link the
12compiled version of this file into combinations with other programs,
13and to distribute those combinations without any restriction coming
14from the use of this file. (The General Public License restrictions
15do apply in other respects; for example, they cover modification of
16the file, and distribution when not linked into a combine
17executable.)
18
19This file is distributed in the hope that it will be useful, but
20WITHOUT ANY WARRANTY; without even the implied warranty of
21MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22General Public License for more details.
23
24You should have received a copy of the GNU General Public License
25along with this program; see the file COPYING. If not, write to
26the Free Software Foundation, 51 Franklin Street, Fifth Floor,
27Boston, MA 02110-1301, USA. */
28
29!! libgcc routines for the Renesas / SuperH SH CPUs.
30!! Contributed by Steve Chamberlain.
31!! sac@cygnus.com
32
33!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
34!! recoded in assembly by Toshiyasu Morita
35!! tm@netcom.com
36
37/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
38 ELF local label prefixes by J"orn Rennecke
39 amylaar@cygnus.com */
40
41!
42! __ashrsi3
43!
44! Entry:
45!
46! r4: Value to shift
47! r5: Shifts
48!
49! Exit:
50!
51! r0: Result
52!
53! Destroys:
54!
55! (none)
56!
940d4113
YS
57! __ashrsi3_r0
58!
59! Entry:
60!
61! r4: Value to shift
62! r0: Shifts
63!
64! Exit:
65!
66! r0: Result
67!
68! Destroys:
69!
70! (none)
1aad54a9
PM
71
72 .global __ashrsi3
940d4113 73 .global __ashrsi3_r0
1aad54a9
PM
74
75 .align 2
76__ashrsi3:
940d4113
YS
77 mov r5,r0
78 .align 2
79__ashrsi3_r0:
80 and #31,r0
81 mov.l r4,@-r15
82 mov r0,r4
1aad54a9 83 mova ashrsi3_table,r0
940d4113
YS
84 mov.b @(r0,r4),r4
85 add r4,r0
1aad54a9 86 jmp @r0
940d4113 87 mov.l @r15+,r0
1aad54a9
PM
88
89 .align 2
90ashrsi3_table:
91 .byte ashrsi3_0-ashrsi3_table
92 .byte ashrsi3_1-ashrsi3_table
93 .byte ashrsi3_2-ashrsi3_table
94 .byte ashrsi3_3-ashrsi3_table
95 .byte ashrsi3_4-ashrsi3_table
96 .byte ashrsi3_5-ashrsi3_table
97 .byte ashrsi3_6-ashrsi3_table
98 .byte ashrsi3_7-ashrsi3_table
99 .byte ashrsi3_8-ashrsi3_table
100 .byte ashrsi3_9-ashrsi3_table
101 .byte ashrsi3_10-ashrsi3_table
102 .byte ashrsi3_11-ashrsi3_table
103 .byte ashrsi3_12-ashrsi3_table
104 .byte ashrsi3_13-ashrsi3_table
105 .byte ashrsi3_14-ashrsi3_table
106 .byte ashrsi3_15-ashrsi3_table
107 .byte ashrsi3_16-ashrsi3_table
108 .byte ashrsi3_17-ashrsi3_table
109 .byte ashrsi3_18-ashrsi3_table
110 .byte ashrsi3_19-ashrsi3_table
111 .byte ashrsi3_20-ashrsi3_table
112 .byte ashrsi3_21-ashrsi3_table
113 .byte ashrsi3_22-ashrsi3_table
114 .byte ashrsi3_23-ashrsi3_table
115 .byte ashrsi3_24-ashrsi3_table
116 .byte ashrsi3_25-ashrsi3_table
117 .byte ashrsi3_26-ashrsi3_table
118 .byte ashrsi3_27-ashrsi3_table
119 .byte ashrsi3_28-ashrsi3_table
120 .byte ashrsi3_29-ashrsi3_table
121 .byte ashrsi3_30-ashrsi3_table
122 .byte ashrsi3_31-ashrsi3_table
123
124ashrsi3_31:
125 rotcl r0
126 rts
127 subc r0,r0
128
129ashrsi3_30:
130 shar r0
131ashrsi3_29:
132 shar r0
133ashrsi3_28:
134 shar r0
135ashrsi3_27:
136 shar r0
137ashrsi3_26:
138 shar r0
139ashrsi3_25:
140 shar r0
141ashrsi3_24:
142 shlr16 r0
143 shlr8 r0
144 rts
145 exts.b r0,r0
146
147ashrsi3_23:
148 shar r0
149ashrsi3_22:
150 shar r0
151ashrsi3_21:
152 shar r0
153ashrsi3_20:
154 shar r0
155ashrsi3_19:
156 shar r0
157ashrsi3_18:
158 shar r0
159ashrsi3_17:
160 shar r0
161ashrsi3_16:
162 shlr16 r0
163 rts
164 exts.w r0,r0
165
166ashrsi3_15:
167 shar r0
168ashrsi3_14:
169 shar r0
170ashrsi3_13:
171 shar r0
172ashrsi3_12:
173 shar r0
174ashrsi3_11:
175 shar r0
176ashrsi3_10:
177 shar r0
178ashrsi3_9:
179 shar r0
180ashrsi3_8:
181 shar r0
182ashrsi3_7:
183 shar r0
184ashrsi3_6:
185 shar r0
186ashrsi3_5:
187 shar r0
188ashrsi3_4:
189 shar r0
190ashrsi3_3:
191 shar r0
192ashrsi3_2:
193 shar r0
194ashrsi3_1:
195 rts
196 shar r0
197
198ashrsi3_0:
199 rts
200 nop
This page took 0.402708 seconds and 5 git commands to generate.