xref: /csrg-svn/sys/tahoe/inline/langpats.c (revision 24035)
1*24035Ssam /*
2*24035Ssam  * Copyright (c) 1984 Regents of the University of California.
3*24035Ssam  * All rights reserved.  The Berkeley software License Agreement
4*24035Ssam  * specifies the terms and conditions for redistribution.
5*24035Ssam  */
6*24035Ssam 
7*24035Ssam #ifndef lint
8*24035Ssam static char sccsid[] = "@(#)langpats.c	2.9 (Berkeley) 6/8/85";
9*24035Ssam #endif not lint
10*24035Ssam 
11*24035Ssam #include "inline.h"
12*24035Ssam 
13*24035Ssam /*
14*24035Ssam  * Pattern table for kernel specific routines.
15*24035Ssam  * These patterns are based on the old asm.sed script.
16*24035Ssam  */
17*24035Ssam struct pats language_ptab[] = {
18*24035Ssam 
19*24035Ssam #ifdef vax
20*24035Ssam 	{ "0,_spl0\n",
21*24035Ssam "	mfpr	$18,r0\n\
22*24035Ssam 	mtpr	$0,$18\n" },
23*24035Ssam 
24*24035Ssam 	{ "0,_spl1\n",
25*24035Ssam "	mfpr	$18,r0\n\
26*24035Ssam 	mtpr	$1,$18\n" },
27*24035Ssam 
28*24035Ssam 	{ "0,_splsoftclock\n",
29*24035Ssam "	mfpr	$18,r0\n\
30*24035Ssam 	mtpr	$0x8,$18\n" },
31*24035Ssam 
32*24035Ssam 	{ "0,_splnet\n",
33*24035Ssam "	mfpr	$18,r0\n\
34*24035Ssam 	mtpr	$0xc,$18\n" },
35*24035Ssam 
36*24035Ssam 	{ "0,_splimp\n",
37*24035Ssam "	mfpr	$18,r0\n\
38*24035Ssam 	mtpr	$0x16,$18\n" },
39*24035Ssam 
40*24035Ssam 	{ "0,_spl4\n",
41*24035Ssam "	mfpr	$18,r0\n\
42*24035Ssam 	mtpr	$0x14,$18\n" },
43*24035Ssam 
44*24035Ssam 	{ "0,_splbio\n",
45*24035Ssam "	mfpr	$18,r0\n\
46*24035Ssam 	mtpr	$0x15,$18\n" },
47*24035Ssam 
48*24035Ssam 	{ "0,_spltty\n",
49*24035Ssam "	mfpr	$18,r0\n\
50*24035Ssam 	mtpr	$0x15,$18\n" },
51*24035Ssam 
52*24035Ssam 	{ "0,_spl5\n",
53*24035Ssam "	mfpr	$18,r0\n\
54*24035Ssam 	mtpr	$0x15,$18\n" },
55*24035Ssam 
56*24035Ssam 	{ "0,_splclock\n",
57*24035Ssam "	mfpr	$18,r0\n\
58*24035Ssam 	mtpr	$0x18,$18\n" },
59*24035Ssam 
60*24035Ssam 	{ "0,_spl6\n",
61*24035Ssam "	mfpr	$18,r0\n\
62*24035Ssam 	mtpr	$0x18,$18\n" },
63*24035Ssam 
64*24035Ssam 	{ "0,_splhigh\n",
65*24035Ssam "	mfpr	$18,r0\n\
66*24035Ssam 	mtpr	$0x1f,$18\n" },
67*24035Ssam 
68*24035Ssam 	{ "0,_spl7\n",
69*24035Ssam "	mfpr	$18,r0\n\
70*24035Ssam 	mtpr	$0x1f,$18\n" },
71*24035Ssam 
72*24035Ssam 	{ "1,_splx\n",
73*24035Ssam "	movl	(sp)+,r1\n\
74*24035Ssam 	mfpr	$18,r0\n\
75*24035Ssam 	mtpr	r1,$18\n" },
76*24035Ssam 
77*24035Ssam 	{ "1,_mfpr\n",
78*24035Ssam "	movl	(sp)+,r5\n\
79*24035Ssam 	mfpr	r5,r0\n" },
80*24035Ssam 
81*24035Ssam 	{ "2,_mtpr\n",
82*24035Ssam "	movl	(sp)+,r4\n\
83*24035Ssam 	movl	(sp)+,r5\n\
84*24035Ssam 	mtpr	r5,r4\n" },
85*24035Ssam 
86*24035Ssam 	{ "0,_setsoftclock\n",
87*24035Ssam "	mtpr	$0x8,$0x14\n" },
88*24035Ssam 
89*24035Ssam 	{ "1,_resume\n",
90*24035Ssam "	movl	(sp)+,r5\n\
91*24035Ssam 	ashl	$9,r5,r0\n\
92*24035Ssam 	movpsl	-(sp)\n\
93*24035Ssam 	jsb	_Resume\n" },
94*24035Ssam 
95*24035Ssam 	{ "3,_copyin\n",
96*24035Ssam "	movl	(sp)+,r1\n\
97*24035Ssam 	movl	(sp)+,r3\n\
98*24035Ssam 	movl	(sp)+,r5\n\
99*24035Ssam 	jsb	_Copyin\n" },
100*24035Ssam 
101*24035Ssam 	{ "3,_copyout\n",
102*24035Ssam "	movl	(sp)+,r1\n\
103*24035Ssam 	movl	(sp)+,r3\n\
104*24035Ssam 	movl	(sp)+,r5\n\
105*24035Ssam 	jsb	_Copyout\n" },
106*24035Ssam 
107*24035Ssam 	{ "1,_fubyte\n",
108*24035Ssam "	movl	(sp)+,r0\n\
109*24035Ssam 	jsb	_Fubyte\n" },
110*24035Ssam 
111*24035Ssam 	{ "1,_fuibyte\n",
112*24035Ssam "	movl	(sp)+,r0\n\
113*24035Ssam 	jsb	_Fubyte\n" },
114*24035Ssam 
115*24035Ssam 	{ "1,_fuword\n",
116*24035Ssam "	movl	(sp)+,r0\n\
117*24035Ssam 	jsb	_Fuword\n" },
118*24035Ssam 
119*24035Ssam 	{ "1,_fuiword\n",
120*24035Ssam "	movl	(sp)+,r0\n\
121*24035Ssam 	jsb	_Fuword\n" },
122*24035Ssam 
123*24035Ssam 	{ "2,_subyte\n",
124*24035Ssam "	movl	(sp)+,r0\n\
125*24035Ssam 	movl	(sp)+,r1\n\
126*24035Ssam 	jsb	_Subyte\n" },
127*24035Ssam 
128*24035Ssam 	{ "2,_suibyte\n",
129*24035Ssam "	movl	(sp)+,r0\n\
130*24035Ssam 	movl	(sp)+,r1\n\
131*24035Ssam 	jsb	_Subyte\n" },
132*24035Ssam 
133*24035Ssam 	{ "2,_suword\n",
134*24035Ssam "	movl	(sp)+,r0\n\
135*24035Ssam 	movl	(sp)+,r1\n\
136*24035Ssam 	jsb	_Suword\n" },
137*24035Ssam 
138*24035Ssam 	{ "2,_suiword\n",
139*24035Ssam "	movl	(sp)+,r0\n\
140*24035Ssam 	movl	(sp)+,r1\n\
141*24035Ssam 	jsb	_Suword\n" },
142*24035Ssam 
143*24035Ssam 	{ "1,_setrq\n",
144*24035Ssam "	movl	(sp)+,r0\n\
145*24035Ssam 	jsb	_Setrq\n" },
146*24035Ssam 
147*24035Ssam 	{ "1,_remrq\n",
148*24035Ssam "	movl	(sp)+,r0\n\
149*24035Ssam 	jsb	_Remrq\n" },
150*24035Ssam 
151*24035Ssam 	{ "0,_swtch\n",
152*24035Ssam "	movpsl	-(sp)\n\
153*24035Ssam 	jsb	_Swtch\n" },
154*24035Ssam 
155*24035Ssam 	{ "1,_setjmp\n",
156*24035Ssam "	movl	(sp)+,r1\n\
157*24035Ssam 	clrl	r0\n\
158*24035Ssam 	movl	fp,(r1)+\n\
159*24035Ssam 	moval	1(pc),(r1)\n" },
160*24035Ssam 
161*24035Ssam 	{ "1,_longjmp\n",
162*24035Ssam "	movl	(sp)+,r0\n\
163*24035Ssam 	jsb	_Longjmp\n" },
164*24035Ssam 
165*24035Ssam 	{ "1,_ffs\n",
166*24035Ssam "	movl	(sp)+,r1\n\
167*24035Ssam 	ffs	$0,$32,r1,r0\n\
168*24035Ssam 	bneq	1f\n\
169*24035Ssam 	mnegl	$1,r0\n\
170*24035Ssam 1:\n\
171*24035Ssam 	incl	r0\n" },
172*24035Ssam 
173*24035Ssam 	{ "1,_htons\n",
174*24035Ssam "	movl	(sp)+,r5\n\
175*24035Ssam 	rotl	$8,r5,r0\n\
176*24035Ssam 	rotl	$-8,r5,r1\n\
177*24035Ssam 	movb	r1,r0\n\
178*24035Ssam 	movzwl	r0,r0\n" },
179*24035Ssam 
180*24035Ssam 	{ "1,_ntohs\n",
181*24035Ssam "	movl	(sp)+,r5\n\
182*24035Ssam 	rotl	$8,r5,r0\n\
183*24035Ssam 	rotl	$-8,r5,r1\n\
184*24035Ssam 	movb	r1,r0\n\
185*24035Ssam 	movzwl	r0,r0\n" },
186*24035Ssam 
187*24035Ssam 	{ "1,_htonl\n",
188*24035Ssam "	movl	(sp)+,r5\n\
189*24035Ssam 	rotl	$-8,r5,r0\n\
190*24035Ssam 	insv	r0,$16,$8,r0\n\
191*24035Ssam 	rotl	$8,r5,r1\n\
192*24035Ssam 	movb	r1,r0\n" },
193*24035Ssam 
194*24035Ssam 	{ "1,_ntohl\n",
195*24035Ssam "	movl	(sp)+,r5\n\
196*24035Ssam 	rotl	$-8,r5,r0\n\
197*24035Ssam 	insv	r0,$16,$8,r0\n\
198*24035Ssam 	rotl	$8,r5,r1\n\
199*24035Ssam 	movb	r1,r0\n" },
200*24035Ssam 
201*24035Ssam 	{ "2,__insque\n",
202*24035Ssam "	movl	(sp)+,r4\n\
203*24035Ssam 	movl	(sp)+,r5\n\
204*24035Ssam 	insque	(r4),(r5)\n" },
205*24035Ssam 
206*24035Ssam 	{ "1,__remque\n",
207*24035Ssam "	movl	(sp)+,r5\n\
208*24035Ssam 	remque	(r5),r0\n" },
209*24035Ssam 
210*24035Ssam 	{ "2,__queue\n",
211*24035Ssam "	movl	(sp)+,r0\n\
212*24035Ssam 	movl	(sp)+,r1\n\
213*24035Ssam 	insque	(r1),*4(r0)\n" },
214*24035Ssam 
215*24035Ssam 	{ "1,__dequeue\n",
216*24035Ssam "	movl	(sp)+,r0\n\
217*24035Ssam 	remque	*(r0),r0\n" },
218*24035Ssam 
219*24035Ssam 	{ "2,_imin\n",
220*24035Ssam "	movl	(sp)+,r0\n\
221*24035Ssam 	movl	(sp)+,r5\n\
222*24035Ssam 	cmpl	r0,r5\n\
223*24035Ssam 	bleq	1f\n\
224*24035Ssam 	movl	r5,r0\n\
225*24035Ssam 1:\n" },
226*24035Ssam 
227*24035Ssam 	{ "2,_imax\n",
228*24035Ssam "	movl	(sp)+,r0\n\
229*24035Ssam 	movl	(sp)+,r5\n\
230*24035Ssam 	cmpl	r0,r5\n\
231*24035Ssam 	bgeq	1f\n\
232*24035Ssam 	movl	r5,r0\n\
233*24035Ssam 1:\n" },
234*24035Ssam 
235*24035Ssam 	{ "2,_min\n",
236*24035Ssam "	movl	(sp)+,r0\n\
237*24035Ssam 	movl	(sp)+,r5\n\
238*24035Ssam 	cmpl	r0,r5\n\
239*24035Ssam 	blequ	1f\n\
240*24035Ssam 	movl	r5,r0\n\
241*24035Ssam 1:\n" },
242*24035Ssam 
243*24035Ssam 	{ "2,_max\n",
244*24035Ssam "	movl	(sp)+,r0\n\
245*24035Ssam 	movl	(sp)+,r5\n\
246*24035Ssam 	cmpl	r0,r5\n\
247*24035Ssam 	bgequ	1f\n\
248*24035Ssam 	movl	r5,r0\n\
249*24035Ssam 1:\n" },
250*24035Ssam #endif vax
251*24035Ssam 
252*24035Ssam #ifdef mc68000
253*24035Ssam /* someday... */
254*24035Ssam #endif mc68000
255*24035Ssam 
256*24035Ssam 	{ "", "" }
257*24035Ssam };
258