xref: /OK3568_Linux_fs/u-boot/arch/sh/lib/lshrsi3.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2*4882a593Smuzhiyun   2004, 2005, 2006
3*4882a593Smuzhiyun   Free Software Foundation, Inc.
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun * SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun */
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun!! libgcc routines for the Renesas / SuperH SH CPUs.
9*4882a593Smuzhiyun!! Contributed by Steve Chamberlain.
10*4882a593Smuzhiyun!! sac@cygnus.com
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
13*4882a593Smuzhiyun!! recoded in assembly by Toshiyasu Morita
14*4882a593Smuzhiyun!! tm@netcom.com
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
17*4882a593Smuzhiyun   ELF local label prefixes by J"orn Rennecke
18*4882a593Smuzhiyun   amylaar@cygnus.com  */
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun!
21*4882a593Smuzhiyun! __lshrsi3)
22*4882a593Smuzhiyun!
23*4882a593Smuzhiyun! Entry:
24*4882a593Smuzhiyun!
25*4882a593Smuzhiyun! r4: Value to shift
26*4882a593Smuzhiyun! r5: Shifts
27*4882a593Smuzhiyun!
28*4882a593Smuzhiyun! Exit:
29*4882a593Smuzhiyun!
30*4882a593Smuzhiyun! r0: Result
31*4882a593Smuzhiyun!
32*4882a593Smuzhiyun! Destroys:
33*4882a593Smuzhiyun!
34*4882a593Smuzhiyun! (none)
35*4882a593Smuzhiyun!
36*4882a593Smuzhiyun	.global	__lshrsi3
37*4882a593Smuzhiyun	.align	2
38*4882a593Smuzhiyun__lshrsi3:
39*4882a593Smuzhiyun	mov	#31,r0
40*4882a593Smuzhiyun	and	r0,r5
41*4882a593Smuzhiyun	mova	__lshrsi3_table,r0
42*4882a593Smuzhiyun	mov.b	@(r0,r5),r5
43*4882a593Smuzhiyun#ifdef __sh1__
44*4882a593Smuzhiyun	add	r5,r0
45*4882a593Smuzhiyun	jmp	@r0
46*4882a593Smuzhiyun#else
47*4882a593Smuzhiyun	braf	r5
48*4882a593Smuzhiyun#endif
49*4882a593Smuzhiyun	mov	r4,r0
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun	.align	2
52*4882a593Smuzhiyun__lshrsi3_table:
53*4882a593Smuzhiyun	.byte		__lshrsi3_0-__lshrsi3_table
54*4882a593Smuzhiyun	.byte		__lshrsi3_1-__lshrsi3_table
55*4882a593Smuzhiyun	.byte		__lshrsi3_2-__lshrsi3_table
56*4882a593Smuzhiyun	.byte		__lshrsi3_3-__lshrsi3_table
57*4882a593Smuzhiyun	.byte		__lshrsi3_4-__lshrsi3_table
58*4882a593Smuzhiyun	.byte		__lshrsi3_5-__lshrsi3_table
59*4882a593Smuzhiyun	.byte		__lshrsi3_6-__lshrsi3_table
60*4882a593Smuzhiyun	.byte		__lshrsi3_7-__lshrsi3_table
61*4882a593Smuzhiyun	.byte		__lshrsi3_8-__lshrsi3_table
62*4882a593Smuzhiyun	.byte		__lshrsi3_9-__lshrsi3_table
63*4882a593Smuzhiyun	.byte		__lshrsi3_10-__lshrsi3_table
64*4882a593Smuzhiyun	.byte		__lshrsi3_11-__lshrsi3_table
65*4882a593Smuzhiyun	.byte		__lshrsi3_12-__lshrsi3_table
66*4882a593Smuzhiyun	.byte		__lshrsi3_13-__lshrsi3_table
67*4882a593Smuzhiyun	.byte		__lshrsi3_14-__lshrsi3_table
68*4882a593Smuzhiyun	.byte		__lshrsi3_15-__lshrsi3_table
69*4882a593Smuzhiyun	.byte		__lshrsi3_16-__lshrsi3_table
70*4882a593Smuzhiyun	.byte		__lshrsi3_17-__lshrsi3_table
71*4882a593Smuzhiyun	.byte		__lshrsi3_18-__lshrsi3_table
72*4882a593Smuzhiyun	.byte		__lshrsi3_19-__lshrsi3_table
73*4882a593Smuzhiyun	.byte		__lshrsi3_20-__lshrsi3_table
74*4882a593Smuzhiyun	.byte		__lshrsi3_21-__lshrsi3_table
75*4882a593Smuzhiyun	.byte		__lshrsi3_22-__lshrsi3_table
76*4882a593Smuzhiyun	.byte		__lshrsi3_23-__lshrsi3_table
77*4882a593Smuzhiyun	.byte		__lshrsi3_24-__lshrsi3_table
78*4882a593Smuzhiyun	.byte		__lshrsi3_25-__lshrsi3_table
79*4882a593Smuzhiyun	.byte		__lshrsi3_26-__lshrsi3_table
80*4882a593Smuzhiyun	.byte		__lshrsi3_27-__lshrsi3_table
81*4882a593Smuzhiyun	.byte		__lshrsi3_28-__lshrsi3_table
82*4882a593Smuzhiyun	.byte		__lshrsi3_29-__lshrsi3_table
83*4882a593Smuzhiyun	.byte		__lshrsi3_30-__lshrsi3_table
84*4882a593Smuzhiyun	.byte		__lshrsi3_31-__lshrsi3_table
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun__lshrsi3_6:
87*4882a593Smuzhiyun	shlr2	r0
88*4882a593Smuzhiyun__lshrsi3_4:
89*4882a593Smuzhiyun	shlr2	r0
90*4882a593Smuzhiyun__lshrsi3_2:
91*4882a593Smuzhiyun	rts
92*4882a593Smuzhiyun	shlr2	r0
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun__lshrsi3_7:
95*4882a593Smuzhiyun	shlr2	r0
96*4882a593Smuzhiyun__lshrsi3_5:
97*4882a593Smuzhiyun	shlr2	r0
98*4882a593Smuzhiyun__lshrsi3_3:
99*4882a593Smuzhiyun	shlr2	r0
100*4882a593Smuzhiyun__lshrsi3_1:
101*4882a593Smuzhiyun	rts
102*4882a593Smuzhiyun	shlr	r0
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun__lshrsi3_14:
105*4882a593Smuzhiyun	shlr2	r0
106*4882a593Smuzhiyun__lshrsi3_12:
107*4882a593Smuzhiyun	shlr2	r0
108*4882a593Smuzhiyun__lshrsi3_10:
109*4882a593Smuzhiyun	shlr2	r0
110*4882a593Smuzhiyun__lshrsi3_8:
111*4882a593Smuzhiyun	rts
112*4882a593Smuzhiyun	shlr8	r0
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun__lshrsi3_15:
115*4882a593Smuzhiyun	shlr2	r0
116*4882a593Smuzhiyun__lshrsi3_13:
117*4882a593Smuzhiyun	shlr2	r0
118*4882a593Smuzhiyun__lshrsi3_11:
119*4882a593Smuzhiyun	shlr2	r0
120*4882a593Smuzhiyun__lshrsi3_9:
121*4882a593Smuzhiyun	shlr8	r0
122*4882a593Smuzhiyun	rts
123*4882a593Smuzhiyun	shlr	r0
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun__lshrsi3_22:
126*4882a593Smuzhiyun	shlr2	r0
127*4882a593Smuzhiyun__lshrsi3_20:
128*4882a593Smuzhiyun	shlr2	r0
129*4882a593Smuzhiyun__lshrsi3_18:
130*4882a593Smuzhiyun	shlr2	r0
131*4882a593Smuzhiyun__lshrsi3_16:
132*4882a593Smuzhiyun	rts
133*4882a593Smuzhiyun	shlr16	r0
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun__lshrsi3_23:
136*4882a593Smuzhiyun	shlr2	r0
137*4882a593Smuzhiyun__lshrsi3_21:
138*4882a593Smuzhiyun	shlr2	r0
139*4882a593Smuzhiyun__lshrsi3_19:
140*4882a593Smuzhiyun	shlr2	r0
141*4882a593Smuzhiyun__lshrsi3_17:
142*4882a593Smuzhiyun	shlr16	r0
143*4882a593Smuzhiyun	rts
144*4882a593Smuzhiyun	shlr	r0
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun__lshrsi3_30:
147*4882a593Smuzhiyun	shlr2	r0
148*4882a593Smuzhiyun__lshrsi3_28:
149*4882a593Smuzhiyun	shlr2	r0
150*4882a593Smuzhiyun__lshrsi3_26:
151*4882a593Smuzhiyun	shlr2	r0
152*4882a593Smuzhiyun__lshrsi3_24:
153*4882a593Smuzhiyun	shlr16	r0
154*4882a593Smuzhiyun	rts
155*4882a593Smuzhiyun	shlr8	r0
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun__lshrsi3_31:
158*4882a593Smuzhiyun	shlr2	r0
159*4882a593Smuzhiyun__lshrsi3_29:
160*4882a593Smuzhiyun	shlr2	r0
161*4882a593Smuzhiyun__lshrsi3_27:
162*4882a593Smuzhiyun	shlr2	r0
163*4882a593Smuzhiyun__lshrsi3_25:
164*4882a593Smuzhiyun	shlr16	r0
165*4882a593Smuzhiyun	shlr8	r0
166*4882a593Smuzhiyun	rts
167*4882a593Smuzhiyun	shlr	r0
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun__lshrsi3_0:
170*4882a593Smuzhiyun	rts
171*4882a593Smuzhiyun	nop
172