xref: /openbmc/u-boot/arch/sh/lib/ashrsi3.S (revision cb4046c592b7e1a0b3412bea8de21ec16a5e9e95)
1*cb4046c5SPhil Edworthy/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2*cb4046c5SPhil Edworthy   2004, 2005, 2006
3*cb4046c5SPhil Edworthy   Free Software Foundation, Inc.
4*cb4046c5SPhil Edworthy
5*cb4046c5SPhil EdworthyThis file is free software; you can redistribute it and/or modify it
6*cb4046c5SPhil Edworthyunder the terms of the GNU General Public License as published by the
7*cb4046c5SPhil EdworthyFree Software Foundation; either version 2, or (at your option) any
8*cb4046c5SPhil Edworthylater version.
9*cb4046c5SPhil Edworthy
10*cb4046c5SPhil EdworthyIn addition to the permissions in the GNU General Public License, the
11*cb4046c5SPhil EdworthyFree Software Foundation gives you unlimited permission to link the
12*cb4046c5SPhil Edworthycompiled version of this file into combinations with other programs,
13*cb4046c5SPhil Edworthyand to distribute those combinations without any restriction coming
14*cb4046c5SPhil Edworthyfrom the use of this file.  (The General Public License restrictions
15*cb4046c5SPhil Edworthydo apply in other respects; for example, they cover modification of
16*cb4046c5SPhil Edworthythe file, and distribution when not linked into a combine
17*cb4046c5SPhil Edworthyexecutable.)
18*cb4046c5SPhil Edworthy
19*cb4046c5SPhil EdworthyThis file is distributed in the hope that it will be useful, but
20*cb4046c5SPhil EdworthyWITHOUT ANY WARRANTY; without even the implied warranty of
21*cb4046c5SPhil EdworthyMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22*cb4046c5SPhil EdworthyGeneral Public License for more details.
23*cb4046c5SPhil Edworthy
24*cb4046c5SPhil EdworthyYou should have received a copy of the GNU General Public License
25*cb4046c5SPhil Edworthyalong with this program; see the file COPYING.  If not, write to
26*cb4046c5SPhil Edworthythe Free Software Foundation, 51 Franklin Street, Fifth Floor,
27*cb4046c5SPhil EdworthyBoston, MA 02110-1301, USA.  */
28*cb4046c5SPhil Edworthy
29*cb4046c5SPhil Edworthy!! libgcc routines for the Renesas / SuperH SH CPUs.
30*cb4046c5SPhil Edworthy!! Contributed by Steve Chamberlain.
31*cb4046c5SPhil Edworthy!! sac@cygnus.com
32*cb4046c5SPhil Edworthy
33*cb4046c5SPhil Edworthy!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
34*cb4046c5SPhil Edworthy!! recoded in assembly by Toshiyasu Morita
35*cb4046c5SPhil Edworthy!! tm@netcom.com
36*cb4046c5SPhil Edworthy
37*cb4046c5SPhil Edworthy/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
38*cb4046c5SPhil Edworthy   ELF local label prefixes by J"orn Rennecke
39*cb4046c5SPhil Edworthy   amylaar@cygnus.com  */
40*cb4046c5SPhil Edworthy
41*cb4046c5SPhil Edworthy!
42*cb4046c5SPhil Edworthy! __ashrsi3
43*cb4046c5SPhil Edworthy!
44*cb4046c5SPhil Edworthy! Entry:
45*cb4046c5SPhil Edworthy!
46*cb4046c5SPhil Edworthy! r4: Value to shift
47*cb4046c5SPhil Edworthy! r5: Shifts
48*cb4046c5SPhil Edworthy!
49*cb4046c5SPhil Edworthy! Exit:
50*cb4046c5SPhil Edworthy!
51*cb4046c5SPhil Edworthy! r0: Result
52*cb4046c5SPhil Edworthy!
53*cb4046c5SPhil Edworthy! Destroys:
54*cb4046c5SPhil Edworthy!
55*cb4046c5SPhil Edworthy! (none)
56*cb4046c5SPhil Edworthy!
57*cb4046c5SPhil Edworthy
58*cb4046c5SPhil Edworthy	.global	__ashrsi3
59*cb4046c5SPhil Edworthy
60*cb4046c5SPhil Edworthy	.align	2
61*cb4046c5SPhil Edworthy__ashrsi3:
62*cb4046c5SPhil Edworthy	mov	#31,r0
63*cb4046c5SPhil Edworthy	and	r0,r5
64*cb4046c5SPhil Edworthy	mova	ashrsi3_table,r0
65*cb4046c5SPhil Edworthy	mov.b	@(r0,r5),r5
66*cb4046c5SPhil Edworthy#ifdef __sh1__
67*cb4046c5SPhil Edworthy	add	r5,r0
68*cb4046c5SPhil Edworthy	jmp	@r0
69*cb4046c5SPhil Edworthy#else
70*cb4046c5SPhil Edworthy	braf	r5
71*cb4046c5SPhil Edworthy#endif
72*cb4046c5SPhil Edworthy	mov	r4,r0
73*cb4046c5SPhil Edworthy
74*cb4046c5SPhil Edworthy	.align	2
75*cb4046c5SPhil Edworthyashrsi3_table:
76*cb4046c5SPhil Edworthy	.byte		ashrsi3_0-ashrsi3_table
77*cb4046c5SPhil Edworthy	.byte		ashrsi3_1-ashrsi3_table
78*cb4046c5SPhil Edworthy	.byte		ashrsi3_2-ashrsi3_table
79*cb4046c5SPhil Edworthy	.byte		ashrsi3_3-ashrsi3_table
80*cb4046c5SPhil Edworthy	.byte		ashrsi3_4-ashrsi3_table
81*cb4046c5SPhil Edworthy	.byte		ashrsi3_5-ashrsi3_table
82*cb4046c5SPhil Edworthy	.byte		ashrsi3_6-ashrsi3_table
83*cb4046c5SPhil Edworthy	.byte		ashrsi3_7-ashrsi3_table
84*cb4046c5SPhil Edworthy	.byte		ashrsi3_8-ashrsi3_table
85*cb4046c5SPhil Edworthy	.byte		ashrsi3_9-ashrsi3_table
86*cb4046c5SPhil Edworthy	.byte		ashrsi3_10-ashrsi3_table
87*cb4046c5SPhil Edworthy	.byte		ashrsi3_11-ashrsi3_table
88*cb4046c5SPhil Edworthy	.byte		ashrsi3_12-ashrsi3_table
89*cb4046c5SPhil Edworthy	.byte		ashrsi3_13-ashrsi3_table
90*cb4046c5SPhil Edworthy	.byte		ashrsi3_14-ashrsi3_table
91*cb4046c5SPhil Edworthy	.byte		ashrsi3_15-ashrsi3_table
92*cb4046c5SPhil Edworthy	.byte		ashrsi3_16-ashrsi3_table
93*cb4046c5SPhil Edworthy	.byte		ashrsi3_17-ashrsi3_table
94*cb4046c5SPhil Edworthy	.byte		ashrsi3_18-ashrsi3_table
95*cb4046c5SPhil Edworthy	.byte		ashrsi3_19-ashrsi3_table
96*cb4046c5SPhil Edworthy	.byte		ashrsi3_20-ashrsi3_table
97*cb4046c5SPhil Edworthy	.byte		ashrsi3_21-ashrsi3_table
98*cb4046c5SPhil Edworthy	.byte		ashrsi3_22-ashrsi3_table
99*cb4046c5SPhil Edworthy	.byte		ashrsi3_23-ashrsi3_table
100*cb4046c5SPhil Edworthy	.byte		ashrsi3_24-ashrsi3_table
101*cb4046c5SPhil Edworthy	.byte		ashrsi3_25-ashrsi3_table
102*cb4046c5SPhil Edworthy	.byte		ashrsi3_26-ashrsi3_table
103*cb4046c5SPhil Edworthy	.byte		ashrsi3_27-ashrsi3_table
104*cb4046c5SPhil Edworthy	.byte		ashrsi3_28-ashrsi3_table
105*cb4046c5SPhil Edworthy	.byte		ashrsi3_29-ashrsi3_table
106*cb4046c5SPhil Edworthy	.byte		ashrsi3_30-ashrsi3_table
107*cb4046c5SPhil Edworthy	.byte		ashrsi3_31-ashrsi3_table
108*cb4046c5SPhil Edworthy
109*cb4046c5SPhil Edworthyashrsi3_31:
110*cb4046c5SPhil Edworthy	rotcl	r0
111*cb4046c5SPhil Edworthy	rts
112*cb4046c5SPhil Edworthy	subc	r0,r0
113*cb4046c5SPhil Edworthy
114*cb4046c5SPhil Edworthyashrsi3_30:
115*cb4046c5SPhil Edworthy	shar	r0
116*cb4046c5SPhil Edworthyashrsi3_29:
117*cb4046c5SPhil Edworthy	shar	r0
118*cb4046c5SPhil Edworthyashrsi3_28:
119*cb4046c5SPhil Edworthy	shar	r0
120*cb4046c5SPhil Edworthyashrsi3_27:
121*cb4046c5SPhil Edworthy	shar	r0
122*cb4046c5SPhil Edworthyashrsi3_26:
123*cb4046c5SPhil Edworthy	shar	r0
124*cb4046c5SPhil Edworthyashrsi3_25:
125*cb4046c5SPhil Edworthy	shar	r0
126*cb4046c5SPhil Edworthyashrsi3_24:
127*cb4046c5SPhil Edworthy	shlr16	r0
128*cb4046c5SPhil Edworthy	shlr8	r0
129*cb4046c5SPhil Edworthy	rts
130*cb4046c5SPhil Edworthy	exts.b	r0,r0
131*cb4046c5SPhil Edworthy
132*cb4046c5SPhil Edworthyashrsi3_23:
133*cb4046c5SPhil Edworthy	shar	r0
134*cb4046c5SPhil Edworthyashrsi3_22:
135*cb4046c5SPhil Edworthy	shar	r0
136*cb4046c5SPhil Edworthyashrsi3_21:
137*cb4046c5SPhil Edworthy	shar	r0
138*cb4046c5SPhil Edworthyashrsi3_20:
139*cb4046c5SPhil Edworthy	shar	r0
140*cb4046c5SPhil Edworthyashrsi3_19:
141*cb4046c5SPhil Edworthy	shar	r0
142*cb4046c5SPhil Edworthyashrsi3_18:
143*cb4046c5SPhil Edworthy	shar	r0
144*cb4046c5SPhil Edworthyashrsi3_17:
145*cb4046c5SPhil Edworthy	shar	r0
146*cb4046c5SPhil Edworthyashrsi3_16:
147*cb4046c5SPhil Edworthy	shlr16	r0
148*cb4046c5SPhil Edworthy	rts
149*cb4046c5SPhil Edworthy	exts.w	r0,r0
150*cb4046c5SPhil Edworthy
151*cb4046c5SPhil Edworthyashrsi3_15:
152*cb4046c5SPhil Edworthy	shar	r0
153*cb4046c5SPhil Edworthyashrsi3_14:
154*cb4046c5SPhil Edworthy	shar	r0
155*cb4046c5SPhil Edworthyashrsi3_13:
156*cb4046c5SPhil Edworthy	shar	r0
157*cb4046c5SPhil Edworthyashrsi3_12:
158*cb4046c5SPhil Edworthy	shar	r0
159*cb4046c5SPhil Edworthyashrsi3_11:
160*cb4046c5SPhil Edworthy	shar	r0
161*cb4046c5SPhil Edworthyashrsi3_10:
162*cb4046c5SPhil Edworthy	shar	r0
163*cb4046c5SPhil Edworthyashrsi3_9:
164*cb4046c5SPhil Edworthy	shar	r0
165*cb4046c5SPhil Edworthyashrsi3_8:
166*cb4046c5SPhil Edworthy	shar	r0
167*cb4046c5SPhil Edworthyashrsi3_7:
168*cb4046c5SPhil Edworthy	shar	r0
169*cb4046c5SPhil Edworthyashrsi3_6:
170*cb4046c5SPhil Edworthy	shar	r0
171*cb4046c5SPhil Edworthyashrsi3_5:
172*cb4046c5SPhil Edworthy	shar	r0
173*cb4046c5SPhil Edworthyashrsi3_4:
174*cb4046c5SPhil Edworthy	shar	r0
175*cb4046c5SPhil Edworthyashrsi3_3:
176*cb4046c5SPhil Edworthy	shar	r0
177*cb4046c5SPhil Edworthyashrsi3_2:
178*cb4046c5SPhil Edworthy	shar	r0
179*cb4046c5SPhil Edworthyashrsi3_1:
180*cb4046c5SPhil Edworthy	rts
181*cb4046c5SPhil Edworthy	shar	r0
182*cb4046c5SPhil Edworthy
183*cb4046c5SPhil Edworthyashrsi3_0:
184*cb4046c5SPhil Edworthy	rts
185*cb4046c5SPhil Edworthy	nop
186