xref: /rk3399_rockchip-uboot/arch/sh/lib/ashrsi3.S (revision 326ea986ac150acdc7656d57fca647db80b50158)
1cb4046c5SPhil Edworthy/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2cb4046c5SPhil Edworthy   2004, 2005, 2006
3cb4046c5SPhil Edworthy   Free Software Foundation, Inc.
4cb4046c5SPhil Edworthy
5*1a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
6*1a459660SWolfgang Denk */
7cb4046c5SPhil Edworthy
8cb4046c5SPhil Edworthy!! libgcc routines for the Renesas / SuperH SH CPUs.
9cb4046c5SPhil Edworthy!! Contributed by Steve Chamberlain.
10cb4046c5SPhil Edworthy!! sac@cygnus.com
11cb4046c5SPhil Edworthy
12cb4046c5SPhil Edworthy!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
13cb4046c5SPhil Edworthy!! recoded in assembly by Toshiyasu Morita
14cb4046c5SPhil Edworthy!! tm@netcom.com
15cb4046c5SPhil Edworthy
16cb4046c5SPhil Edworthy/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
17cb4046c5SPhil Edworthy   ELF local label prefixes by J"orn Rennecke
18cb4046c5SPhil Edworthy   amylaar@cygnus.com  */
19cb4046c5SPhil Edworthy
20cb4046c5SPhil Edworthy!
21cb4046c5SPhil Edworthy! __ashrsi3
22cb4046c5SPhil Edworthy!
23cb4046c5SPhil Edworthy! Entry:
24cb4046c5SPhil Edworthy!
25cb4046c5SPhil Edworthy! r4: Value to shift
26cb4046c5SPhil Edworthy! r5: Shifts
27cb4046c5SPhil Edworthy!
28cb4046c5SPhil Edworthy! Exit:
29cb4046c5SPhil Edworthy!
30cb4046c5SPhil Edworthy! r0: Result
31cb4046c5SPhil Edworthy!
32cb4046c5SPhil Edworthy! Destroys:
33cb4046c5SPhil Edworthy!
34cb4046c5SPhil Edworthy! (none)
35cb4046c5SPhil Edworthy!
36cb4046c5SPhil Edworthy
37cb4046c5SPhil Edworthy	.global	__ashrsi3
38cb4046c5SPhil Edworthy
39cb4046c5SPhil Edworthy	.align	2
40cb4046c5SPhil Edworthy__ashrsi3:
41cb4046c5SPhil Edworthy	mov	#31,r0
42cb4046c5SPhil Edworthy	and	r0,r5
43cb4046c5SPhil Edworthy	mova	ashrsi3_table,r0
44cb4046c5SPhil Edworthy	mov.b	@(r0,r5),r5
45cb4046c5SPhil Edworthy#ifdef __sh1__
46cb4046c5SPhil Edworthy	add	r5,r0
47cb4046c5SPhil Edworthy	jmp	@r0
48cb4046c5SPhil Edworthy#else
49cb4046c5SPhil Edworthy	braf	r5
50cb4046c5SPhil Edworthy#endif
51cb4046c5SPhil Edworthy	mov	r4,r0
52cb4046c5SPhil Edworthy
53cb4046c5SPhil Edworthy	.align	2
54cb4046c5SPhil Edworthyashrsi3_table:
55cb4046c5SPhil Edworthy	.byte		ashrsi3_0-ashrsi3_table
56cb4046c5SPhil Edworthy	.byte		ashrsi3_1-ashrsi3_table
57cb4046c5SPhil Edworthy	.byte		ashrsi3_2-ashrsi3_table
58cb4046c5SPhil Edworthy	.byte		ashrsi3_3-ashrsi3_table
59cb4046c5SPhil Edworthy	.byte		ashrsi3_4-ashrsi3_table
60cb4046c5SPhil Edworthy	.byte		ashrsi3_5-ashrsi3_table
61cb4046c5SPhil Edworthy	.byte		ashrsi3_6-ashrsi3_table
62cb4046c5SPhil Edworthy	.byte		ashrsi3_7-ashrsi3_table
63cb4046c5SPhil Edworthy	.byte		ashrsi3_8-ashrsi3_table
64cb4046c5SPhil Edworthy	.byte		ashrsi3_9-ashrsi3_table
65cb4046c5SPhil Edworthy	.byte		ashrsi3_10-ashrsi3_table
66cb4046c5SPhil Edworthy	.byte		ashrsi3_11-ashrsi3_table
67cb4046c5SPhil Edworthy	.byte		ashrsi3_12-ashrsi3_table
68cb4046c5SPhil Edworthy	.byte		ashrsi3_13-ashrsi3_table
69cb4046c5SPhil Edworthy	.byte		ashrsi3_14-ashrsi3_table
70cb4046c5SPhil Edworthy	.byte		ashrsi3_15-ashrsi3_table
71cb4046c5SPhil Edworthy	.byte		ashrsi3_16-ashrsi3_table
72cb4046c5SPhil Edworthy	.byte		ashrsi3_17-ashrsi3_table
73cb4046c5SPhil Edworthy	.byte		ashrsi3_18-ashrsi3_table
74cb4046c5SPhil Edworthy	.byte		ashrsi3_19-ashrsi3_table
75cb4046c5SPhil Edworthy	.byte		ashrsi3_20-ashrsi3_table
76cb4046c5SPhil Edworthy	.byte		ashrsi3_21-ashrsi3_table
77cb4046c5SPhil Edworthy	.byte		ashrsi3_22-ashrsi3_table
78cb4046c5SPhil Edworthy	.byte		ashrsi3_23-ashrsi3_table
79cb4046c5SPhil Edworthy	.byte		ashrsi3_24-ashrsi3_table
80cb4046c5SPhil Edworthy	.byte		ashrsi3_25-ashrsi3_table
81cb4046c5SPhil Edworthy	.byte		ashrsi3_26-ashrsi3_table
82cb4046c5SPhil Edworthy	.byte		ashrsi3_27-ashrsi3_table
83cb4046c5SPhil Edworthy	.byte		ashrsi3_28-ashrsi3_table
84cb4046c5SPhil Edworthy	.byte		ashrsi3_29-ashrsi3_table
85cb4046c5SPhil Edworthy	.byte		ashrsi3_30-ashrsi3_table
86cb4046c5SPhil Edworthy	.byte		ashrsi3_31-ashrsi3_table
87cb4046c5SPhil Edworthy
88cb4046c5SPhil Edworthyashrsi3_31:
89cb4046c5SPhil Edworthy	rotcl	r0
90cb4046c5SPhil Edworthy	rts
91cb4046c5SPhil Edworthy	subc	r0,r0
92cb4046c5SPhil Edworthy
93cb4046c5SPhil Edworthyashrsi3_30:
94cb4046c5SPhil Edworthy	shar	r0
95cb4046c5SPhil Edworthyashrsi3_29:
96cb4046c5SPhil Edworthy	shar	r0
97cb4046c5SPhil Edworthyashrsi3_28:
98cb4046c5SPhil Edworthy	shar	r0
99cb4046c5SPhil Edworthyashrsi3_27:
100cb4046c5SPhil Edworthy	shar	r0
101cb4046c5SPhil Edworthyashrsi3_26:
102cb4046c5SPhil Edworthy	shar	r0
103cb4046c5SPhil Edworthyashrsi3_25:
104cb4046c5SPhil Edworthy	shar	r0
105cb4046c5SPhil Edworthyashrsi3_24:
106cb4046c5SPhil Edworthy	shlr16	r0
107cb4046c5SPhil Edworthy	shlr8	r0
108cb4046c5SPhil Edworthy	rts
109cb4046c5SPhil Edworthy	exts.b	r0,r0
110cb4046c5SPhil Edworthy
111cb4046c5SPhil Edworthyashrsi3_23:
112cb4046c5SPhil Edworthy	shar	r0
113cb4046c5SPhil Edworthyashrsi3_22:
114cb4046c5SPhil Edworthy	shar	r0
115cb4046c5SPhil Edworthyashrsi3_21:
116cb4046c5SPhil Edworthy	shar	r0
117cb4046c5SPhil Edworthyashrsi3_20:
118cb4046c5SPhil Edworthy	shar	r0
119cb4046c5SPhil Edworthyashrsi3_19:
120cb4046c5SPhil Edworthy	shar	r0
121cb4046c5SPhil Edworthyashrsi3_18:
122cb4046c5SPhil Edworthy	shar	r0
123cb4046c5SPhil Edworthyashrsi3_17:
124cb4046c5SPhil Edworthy	shar	r0
125cb4046c5SPhil Edworthyashrsi3_16:
126cb4046c5SPhil Edworthy	shlr16	r0
127cb4046c5SPhil Edworthy	rts
128cb4046c5SPhil Edworthy	exts.w	r0,r0
129cb4046c5SPhil Edworthy
130cb4046c5SPhil Edworthyashrsi3_15:
131cb4046c5SPhil Edworthy	shar	r0
132cb4046c5SPhil Edworthyashrsi3_14:
133cb4046c5SPhil Edworthy	shar	r0
134cb4046c5SPhil Edworthyashrsi3_13:
135cb4046c5SPhil Edworthy	shar	r0
136cb4046c5SPhil Edworthyashrsi3_12:
137cb4046c5SPhil Edworthy	shar	r0
138cb4046c5SPhil Edworthyashrsi3_11:
139cb4046c5SPhil Edworthy	shar	r0
140cb4046c5SPhil Edworthyashrsi3_10:
141cb4046c5SPhil Edworthy	shar	r0
142cb4046c5SPhil Edworthyashrsi3_9:
143cb4046c5SPhil Edworthy	shar	r0
144cb4046c5SPhil Edworthyashrsi3_8:
145cb4046c5SPhil Edworthy	shar	r0
146cb4046c5SPhil Edworthyashrsi3_7:
147cb4046c5SPhil Edworthy	shar	r0
148cb4046c5SPhil Edworthyashrsi3_6:
149cb4046c5SPhil Edworthy	shar	r0
150cb4046c5SPhil Edworthyashrsi3_5:
151cb4046c5SPhil Edworthy	shar	r0
152cb4046c5SPhil Edworthyashrsi3_4:
153cb4046c5SPhil Edworthy	shar	r0
154cb4046c5SPhil Edworthyashrsi3_3:
155cb4046c5SPhil Edworthy	shar	r0
156cb4046c5SPhil Edworthyashrsi3_2:
157cb4046c5SPhil Edworthy	shar	r0
158cb4046c5SPhil Edworthyashrsi3_1:
159cb4046c5SPhil Edworthy	rts
160cb4046c5SPhil Edworthy	shar	r0
161cb4046c5SPhil Edworthy
162cb4046c5SPhil Edworthyashrsi3_0:
163cb4046c5SPhil Edworthy	rts
164cb4046c5SPhil Edworthy	nop
165