xref: /csrg-svn/sys/tahoe/inline/langpats.c (revision 25692)
124035Ssam /*
224035Ssam  * Copyright (c) 1984 Regents of the University of California.
324035Ssam  * All rights reserved.  The Berkeley software License Agreement
424035Ssam  * specifies the terms and conditions for redistribution.
524035Ssam  */
624035Ssam 
724035Ssam #ifndef lint
8*25692Ssam static char sccsid[] = "@(#)langpats.c	1.2 (Berkeley) 01/05/86";
9*25692Ssam #endif
1024035Ssam 
1124035Ssam #include "inline.h"
1224035Ssam 
1324035Ssam /*
1424035Ssam  * Pattern table for kernel specific routines.
1524035Ssam  * These patterns are based on the old asm.sed script.
1624035Ssam  */
1724035Ssam struct pats language_ptab[] = {
1824035Ssam 
19*25692Ssam #if defined(vax)
2024035Ssam 	{ "0,_spl0\n",
2124035Ssam "	mfpr	$18,r0\n\
2224035Ssam 	mtpr	$0,$18\n" },
2324035Ssam 
2424035Ssam 	{ "0,_spl1\n",
2524035Ssam "	mfpr	$18,r0\n\
2624035Ssam 	mtpr	$1,$18\n" },
2724035Ssam 
2824035Ssam 	{ "0,_splsoftclock\n",
2924035Ssam "	mfpr	$18,r0\n\
3024035Ssam 	mtpr	$0x8,$18\n" },
3124035Ssam 
3224035Ssam 	{ "0,_splnet\n",
3324035Ssam "	mfpr	$18,r0\n\
3424035Ssam 	mtpr	$0xc,$18\n" },
3524035Ssam 
3624035Ssam 	{ "0,_splimp\n",
3724035Ssam "	mfpr	$18,r0\n\
3824035Ssam 	mtpr	$0x16,$18\n" },
3924035Ssam 
4024035Ssam 	{ "0,_spl4\n",
4124035Ssam "	mfpr	$18,r0\n\
4224035Ssam 	mtpr	$0x14,$18\n" },
4324035Ssam 
4424035Ssam 	{ "0,_splbio\n",
4524035Ssam "	mfpr	$18,r0\n\
4624035Ssam 	mtpr	$0x15,$18\n" },
4724035Ssam 
4824035Ssam 	{ "0,_spltty\n",
4924035Ssam "	mfpr	$18,r0\n\
5024035Ssam 	mtpr	$0x15,$18\n" },
5124035Ssam 
5224035Ssam 	{ "0,_spl5\n",
5324035Ssam "	mfpr	$18,r0\n\
5424035Ssam 	mtpr	$0x15,$18\n" },
5524035Ssam 
5624035Ssam 	{ "0,_splclock\n",
5724035Ssam "	mfpr	$18,r0\n\
5824035Ssam 	mtpr	$0x18,$18\n" },
5924035Ssam 
6024035Ssam 	{ "0,_spl6\n",
6124035Ssam "	mfpr	$18,r0\n\
6224035Ssam 	mtpr	$0x18,$18\n" },
6324035Ssam 
6424035Ssam 	{ "0,_splhigh\n",
6524035Ssam "	mfpr	$18,r0\n\
6624035Ssam 	mtpr	$0x1f,$18\n" },
6724035Ssam 
6824035Ssam 	{ "0,_spl7\n",
6924035Ssam "	mfpr	$18,r0\n\
7024035Ssam 	mtpr	$0x1f,$18\n" },
7124035Ssam 
7224035Ssam 	{ "1,_splx\n",
7324035Ssam "	movl	(sp)+,r1\n\
7424035Ssam 	mfpr	$18,r0\n\
7524035Ssam 	mtpr	r1,$18\n" },
7624035Ssam 
7724035Ssam 	{ "1,_mfpr\n",
7824035Ssam "	movl	(sp)+,r5\n\
7924035Ssam 	mfpr	r5,r0\n" },
8024035Ssam 
8124035Ssam 	{ "2,_mtpr\n",
8224035Ssam "	movl	(sp)+,r4\n\
8324035Ssam 	movl	(sp)+,r5\n\
8424035Ssam 	mtpr	r5,r4\n" },
8524035Ssam 
8624035Ssam 	{ "0,_setsoftclock\n",
8724035Ssam "	mtpr	$0x8,$0x14\n" },
8824035Ssam 
8924035Ssam 	{ "1,_resume\n",
9024035Ssam "	movl	(sp)+,r5\n\
9124035Ssam 	ashl	$9,r5,r0\n\
9224035Ssam 	movpsl	-(sp)\n\
9324035Ssam 	jsb	_Resume\n" },
9424035Ssam 
9524035Ssam 	{ "3,_copyin\n",
9624035Ssam "	movl	(sp)+,r1\n\
9724035Ssam 	movl	(sp)+,r3\n\
9824035Ssam 	movl	(sp)+,r5\n\
9924035Ssam 	jsb	_Copyin\n" },
10024035Ssam 
10124035Ssam 	{ "3,_copyout\n",
10224035Ssam "	movl	(sp)+,r1\n\
10324035Ssam 	movl	(sp)+,r3\n\
10424035Ssam 	movl	(sp)+,r5\n\
10524035Ssam 	jsb	_Copyout\n" },
10624035Ssam 
10724035Ssam 	{ "1,_fubyte\n",
10824035Ssam "	movl	(sp)+,r0\n\
10924035Ssam 	jsb	_Fubyte\n" },
11024035Ssam 
11124035Ssam 	{ "1,_fuibyte\n",
11224035Ssam "	movl	(sp)+,r0\n\
11324035Ssam 	jsb	_Fubyte\n" },
11424035Ssam 
11524035Ssam 	{ "1,_fuword\n",
11624035Ssam "	movl	(sp)+,r0\n\
11724035Ssam 	jsb	_Fuword\n" },
11824035Ssam 
11924035Ssam 	{ "1,_fuiword\n",
12024035Ssam "	movl	(sp)+,r0\n\
12124035Ssam 	jsb	_Fuword\n" },
12224035Ssam 
12324035Ssam 	{ "2,_subyte\n",
12424035Ssam "	movl	(sp)+,r0\n\
12524035Ssam 	movl	(sp)+,r1\n\
12624035Ssam 	jsb	_Subyte\n" },
12724035Ssam 
12824035Ssam 	{ "2,_suibyte\n",
12924035Ssam "	movl	(sp)+,r0\n\
13024035Ssam 	movl	(sp)+,r1\n\
13124035Ssam 	jsb	_Subyte\n" },
13224035Ssam 
13324035Ssam 	{ "2,_suword\n",
13424035Ssam "	movl	(sp)+,r0\n\
13524035Ssam 	movl	(sp)+,r1\n\
13624035Ssam 	jsb	_Suword\n" },
13724035Ssam 
13824035Ssam 	{ "2,_suiword\n",
13924035Ssam "	movl	(sp)+,r0\n\
14024035Ssam 	movl	(sp)+,r1\n\
14124035Ssam 	jsb	_Suword\n" },
14224035Ssam 
14324035Ssam 	{ "1,_setrq\n",
14424035Ssam "	movl	(sp)+,r0\n\
14524035Ssam 	jsb	_Setrq\n" },
14624035Ssam 
14724035Ssam 	{ "1,_remrq\n",
14824035Ssam "	movl	(sp)+,r0\n\
14924035Ssam 	jsb	_Remrq\n" },
15024035Ssam 
15124035Ssam 	{ "0,_swtch\n",
15224035Ssam "	movpsl	-(sp)\n\
15324035Ssam 	jsb	_Swtch\n" },
15424035Ssam 
15524035Ssam 	{ "1,_setjmp\n",
15624035Ssam "	movl	(sp)+,r1\n\
15724035Ssam 	clrl	r0\n\
15824035Ssam 	movl	fp,(r1)+\n\
15924035Ssam 	moval	1(pc),(r1)\n" },
16024035Ssam 
16124035Ssam 	{ "1,_longjmp\n",
16224035Ssam "	movl	(sp)+,r0\n\
16324035Ssam 	jsb	_Longjmp\n" },
16424035Ssam 
16524035Ssam 	{ "1,_ffs\n",
16624035Ssam "	movl	(sp)+,r1\n\
16724035Ssam 	ffs	$0,$32,r1,r0\n\
16824035Ssam 	bneq	1f\n\
16924035Ssam 	mnegl	$1,r0\n\
17024035Ssam 1:\n\
17124035Ssam 	incl	r0\n" },
17224035Ssam 
17324035Ssam 	{ "1,_htons\n",
17424035Ssam "	movl	(sp)+,r5\n\
17524035Ssam 	rotl	$8,r5,r0\n\
17624035Ssam 	rotl	$-8,r5,r1\n\
17724035Ssam 	movb	r1,r0\n\
17824035Ssam 	movzwl	r0,r0\n" },
17924035Ssam 
18024035Ssam 	{ "1,_ntohs\n",
18124035Ssam "	movl	(sp)+,r5\n\
18224035Ssam 	rotl	$8,r5,r0\n\
18324035Ssam 	rotl	$-8,r5,r1\n\
18424035Ssam 	movb	r1,r0\n\
18524035Ssam 	movzwl	r0,r0\n" },
18624035Ssam 
18724035Ssam 	{ "1,_htonl\n",
18824035Ssam "	movl	(sp)+,r5\n\
18924035Ssam 	rotl	$-8,r5,r0\n\
19024035Ssam 	insv	r0,$16,$8,r0\n\
19124035Ssam 	rotl	$8,r5,r1\n\
19224035Ssam 	movb	r1,r0\n" },
19324035Ssam 
19424035Ssam 	{ "1,_ntohl\n",
19524035Ssam "	movl	(sp)+,r5\n\
19624035Ssam 	rotl	$-8,r5,r0\n\
19724035Ssam 	insv	r0,$16,$8,r0\n\
19824035Ssam 	rotl	$8,r5,r1\n\
19924035Ssam 	movb	r1,r0\n" },
20024035Ssam 
20124035Ssam 	{ "2,__insque\n",
20224035Ssam "	movl	(sp)+,r4\n\
20324035Ssam 	movl	(sp)+,r5\n\
20424035Ssam 	insque	(r4),(r5)\n" },
20524035Ssam 
20624035Ssam 	{ "1,__remque\n",
20724035Ssam "	movl	(sp)+,r5\n\
20824035Ssam 	remque	(r5),r0\n" },
20924035Ssam 
21024035Ssam 	{ "2,__queue\n",
21124035Ssam "	movl	(sp)+,r0\n\
21224035Ssam 	movl	(sp)+,r1\n\
21324035Ssam 	insque	(r1),*4(r0)\n" },
21424035Ssam 
21524035Ssam 	{ "1,__dequeue\n",
21624035Ssam "	movl	(sp)+,r0\n\
21724035Ssam 	remque	*(r0),r0\n" },
21824035Ssam 
21924035Ssam 	{ "2,_imin\n",
22024035Ssam "	movl	(sp)+,r0\n\
22124035Ssam 	movl	(sp)+,r5\n\
22224035Ssam 	cmpl	r0,r5\n\
22324035Ssam 	bleq	1f\n\
22424035Ssam 	movl	r5,r0\n\
22524035Ssam 1:\n" },
22624035Ssam 
22724035Ssam 	{ "2,_imax\n",
22824035Ssam "	movl	(sp)+,r0\n\
22924035Ssam 	movl	(sp)+,r5\n\
23024035Ssam 	cmpl	r0,r5\n\
23124035Ssam 	bgeq	1f\n\
23224035Ssam 	movl	r5,r0\n\
23324035Ssam 1:\n" },
23424035Ssam 
23524035Ssam 	{ "2,_min\n",
23624035Ssam "	movl	(sp)+,r0\n\
23724035Ssam 	movl	(sp)+,r5\n\
23824035Ssam 	cmpl	r0,r5\n\
23924035Ssam 	blequ	1f\n\
24024035Ssam 	movl	r5,r0\n\
24124035Ssam 1:\n" },
24224035Ssam 
24324035Ssam 	{ "2,_max\n",
24424035Ssam "	movl	(sp)+,r0\n\
24524035Ssam 	movl	(sp)+,r5\n\
24624035Ssam 	cmpl	r0,r5\n\
24724035Ssam 	bgequ	1f\n\
24824035Ssam 	movl	r5,r0\n\
24924035Ssam 1:\n" },
250*25692Ssam #endif
25124035Ssam 
252*25692Ssam #if defined(tahoe)
253*25692Ssam 	{ "4,_spl0\n",
254*25692Ssam "	mfpr	$8,r0\n\
255*25692Ssam 	mtpr	$0,$8\n" },
256*25692Ssam 
257*25692Ssam 	{ "4,_spl1\n",
258*25692Ssam "	mfpr	$8,r0\n\
259*25692Ssam 	mtpr	$0x11,$8\n" },
260*25692Ssam 
261*25692Ssam 	{ "4,_spl3\n",
262*25692Ssam "	mfpr	$8,r0\n\
263*25692Ssam 	mtpr	$0x13,$8\n" },
264*25692Ssam 
265*25692Ssam 	{ "4,_spl7\n",
266*25692Ssam "	mfpr	$8,r0\n\
267*25692Ssam 	mtpr	$0x17,$8\n" },
268*25692Ssam 
269*25692Ssam 	{ "4,_spl8\n",
270*25692Ssam "	mfpr	$8,r0\n\
271*25692Ssam 	mtpr	$0x18,$8\n" },
272*25692Ssam 
273*25692Ssam 	{ "4,_splimp\n",
274*25692Ssam "	mfpr	$8,r0\n\
275*25692Ssam 	mtpr	$0x18,$8\n" },
276*25692Ssam 
277*25692Ssam 	{ "4,_splsoftclock\n",
278*25692Ssam "	mfpr	$18,r0\n\
279*25692Ssam 	mtpr	$0x8,$8\n" },
280*25692Ssam 
281*25692Ssam 	{ "4,_splnet\n",
282*25692Ssam "	mfpr	$8,r0\n\
283*25692Ssam 	mtpr	$0xc,$8\n" },
284*25692Ssam 
285*25692Ssam 	{ "4,_splbio\n",
286*25692Ssam "	mfpr	$8,r0\n\
287*25692Ssam 	mtpr	$0x18,$8\n" },
288*25692Ssam 
289*25692Ssam 	{ "4,_spltty\n",
290*25692Ssam "	mfpr	$8,r0\n\
291*25692Ssam 	mtpr	$0x18,$8\n" },
292*25692Ssam 
293*25692Ssam 	{ "4,_splclock\n",
294*25692Ssam "	mfpr	$8,r0\n\
295*25692Ssam 	mtpr	$0x18,$8\n" },
296*25692Ssam 
297*25692Ssam 	{ "4,_splhigh\n",
298*25692Ssam "	mfpr	$8,r0\n\
299*25692Ssam 	mtpr	$0x18,$8\n" },
300*25692Ssam 
301*25692Ssam 	{ "8,_splx\n",
302*25692Ssam "	movl	(sp)+,r1\n\
303*25692Ssam 	mfpr	$8,r0\n\
304*25692Ssam 	mtpr	r1,$8\n" },
305*25692Ssam 
306*25692Ssam 	{ "8,_mfpr\n",
307*25692Ssam "	movl	(sp)+,r1\n\
308*25692Ssam 	mfpr	r1,r0\n" },
309*25692Ssam 
310*25692Ssam 	{ "12,_mtpr\n",
311*25692Ssam "	movl	(sp)+,r1\n\
312*25692Ssam 	movl	(sp)+,r0\n\
313*25692Ssam 	mtpr	r0,r1\n" },
314*25692Ssam 
315*25692Ssam #ifdef notdef
316*25692Ssam 	{ "8,_uncache\n",
317*25692Ssam "	movl	(sp)+,r1\n\
318*25692Ssam 	mtpr	r1,$0x1c\n" },
319*25692Ssam #endif
320*25692Ssam 
321*25692Ssam 	{ "4,_setsoftclock\n",
322*25692Ssam "	mtpr	$0x8,$0x10\n" },
323*25692Ssam 
324*25692Ssam 	{ "8,_fuibyte\n",
325*25692Ssam "	callf	$8,_fubyte\n" },
326*25692Ssam 
327*25692Ssam 	{ "8,_fuiword\n",
328*25692Ssam "	callf	$8,_fuword\n" },
329*25692Ssam 
330*25692Ssam 	{ "12,_suibyte\n",
331*25692Ssam "	callf	$12,_subyte\n" },
332*25692Ssam 
333*25692Ssam 	{ "12,_suiword\n",
334*25692Ssam "	callf	$12,_suword\n" },
335*25692Ssam 
336*25692Ssam 	{ "8,_setjmp\n",
337*25692Ssam "	movl	(sp)+,r1\n\
338*25692Ssam 	clrl	r0\n\
339*25692Ssam 	movab	(fp),(r1)\n\
340*25692Ssam 	addl2	$4,r1\n\
341*25692Ssam 	movab	1(pc),(r1)\n" },
342*25692Ssam 
343*25692Ssam 	{ "8,_ffs\n",
344*25692Ssam "	movl	(sp)+,r1\n\
345*25692Ssam 	ffs	r1,r0\n\
346*25692Ssam 	bgeq	1f\n\
347*25692Ssam 	mnegl	$1,r0\n\
348*25692Ssam 1:\n\
349*25692Ssam 	incl	r0\n" },
350*25692Ssam 
351*25692Ssam 	{ "12,__insque\n",
352*25692Ssam "	movl	(sp)+,r0\n\
353*25692Ssam 	movl	(sp)+,r1\n\
354*25692Ssam 	insque	(r0),(r1)\n" },
355*25692Ssam 
356*25692Ssam 	{ "8,__remque\n",
357*25692Ssam "	movl	(sp)+,r1\n\
358*25692Ssam 	remque	(r1)\n" },
359*25692Ssam 
360*25692Ssam 	{ "12,_imin\n",
361*25692Ssam "	movl	(sp)+,r0\n\
362*25692Ssam 	movl	(sp)+,r1\n\
363*25692Ssam 	cmpl	r0,r1\n\
364*25692Ssam 	bleq	1f\n\
365*25692Ssam 	movl	r1,r0\n\
366*25692Ssam 1:\n" },
367*25692Ssam 
368*25692Ssam 	{ "12,_imax\n",
369*25692Ssam "	movl	(sp)+,r0\n\
370*25692Ssam 	movl	(sp)+,r1\n\
371*25692Ssam 	cmpl	r0,r1\n\
372*25692Ssam 	bgeq	1f\n\
373*25692Ssam 	movl	r1,r0\n\
374*25692Ssam 1:\n" },
375*25692Ssam 
376*25692Ssam 	{ "12,_min\n",
377*25692Ssam "	movl	(sp)+,r0\n\
378*25692Ssam 	movl	(sp)+,r1\n\
379*25692Ssam 	cmpl	r0,r1\n\
380*25692Ssam 	blequ	1f\n\
381*25692Ssam 	movl	r1,r0\n\
382*25692Ssam 1:\n" },
383*25692Ssam 
384*25692Ssam 	{ "12,_max\n",
385*25692Ssam "	movl	(sp)+,r0\n\
386*25692Ssam 	movl	(sp)+,r1\n\
387*25692Ssam 	cmpl	r0,r1\n\
388*25692Ssam 	bgequ	1f\n\
389*25692Ssam 	movl	r1,r0\n\
390*25692Ssam 1:\n" },
391*25692Ssam 
392*25692Ssam 	{ "12,__movow\n",
393*25692Ssam "	movl	(sp)+,r1\n\
394*25692Ssam 	movl	(sp)+,r0\n\
395*25692Ssam 	movow	r0,(r1)\n" },
396*25692Ssam 
397*25692Ssam 	{ "12,__movob\n",
398*25692Ssam "	movl	(sp)+,r1\n\
399*25692Ssam 	movl	(sp)+,r0\n\
400*25692Ssam 	movob	r0,(r1)\n" },
401*25692Ssam #endif
402*25692Ssam 
403*25692Ssam #if defined(mc68000)
40424035Ssam /* someday... */
405*25692Ssam #endif
40624035Ssam 
40724035Ssam 	{ "", "" }
40824035Ssam };
409