|
|
1.1 root 1: /*-
2: * Copyright (c) 1984, 1986 The Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms, with or without
6: * modification, are permitted provided that the following conditions
7: * are met:
8: * 1. Redistributions of source code must retain the above copyright
9: * notice, this list of conditions and the following disclaimer.
10: * 2. Redistributions in binary form must reproduce the above copyright
11: * notice, this list of conditions and the following disclaimer in the
12: * documentation and/or other materials provided with the distribution.
13: * 3. All advertising materials mentioning features or use of this software
14: * must display the following acknowledgement:
15: * This product includes software developed by the University of
16: * California, Berkeley and its contributors.
17: * 4. Neither the name of the University nor the names of its contributors
18: * may be used to endorse or promote products derived from this software
19: * without specific prior written permission.
20: *
21: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31: * SUCH DAMAGE.
32: */
33:
34: #ifndef lint
35: static char sccsid[] = "@(#)langpats.c 7.3 (Berkeley) 5/8/91";
36: #endif /* not lint */
37:
38: #include "inline.h"
39:
40: /*
41: * Pattern table for kernel specific routines.
42: * These patterns are based on the old asm.sed script.
43: */
44: struct pats language_ptab[] = {
45:
46: #ifdef vax
47: { 0, "_spl0\n",
48: " mfpr $18,r0\n\
49: mtpr $0,$18\n" },
50:
51: { 0, "_spl1\n",
52: " mfpr $18,r0\n\
53: mtpr $1,$18\n" },
54:
55: { 0, "_splsoftclock\n",
56: " mfpr $18,r0\n\
57: mtpr $0x8,$18\n" },
58:
59: { 0, "_splnet\n",
60: " mfpr $18,r0\n\
61: mtpr $0xc,$18\n" },
62:
63: { 0, "_splimp\n",
64: " mfpr $18,r0\n\
65: mtpr $0x16,$18\n" },
66:
67: { 0, "_spl4\n",
68: " mfpr $18,r0\n\
69: mtpr $0x14,$18\n" },
70:
71: { 0, "_splbio\n",
72: " mfpr $18,r0\n\
73: mtpr $0x15,$18\n" },
74:
75: { 0, "_spltty\n",
76: " mfpr $18,r0\n\
77: mtpr $0x15,$18\n" },
78:
79: { 0, "_spl5\n",
80: " mfpr $18,r0\n\
81: mtpr $0x15,$18\n" },
82:
83: { 0, "_spl6\n",
84: " mfpr $18,r0\n\
85: mtpr $0x16,$18\n" },
86:
87: { 0, "_spl7\n",
88: " mfpr $18,r0\n\
89: mtpr $0x17,$18\n" },
90:
91: { 0, "_splclock\n",
92: " mfpr $18,r0\n\
93: mtpr $0x18,$18\n" },
94:
95: { 0, "_splhigh\n",
96: " mfpr $18,r0\n\
97: mtpr $0x1f,$18\n" },
98:
99: { 1, "_splx\n",
100: " movl (sp)+,r0\n\
101: mtpr r0,$18\n" },
102:
103: { 1, "_mfpr\n",
104: " movl (sp)+,r5\n\
105: mfpr r5,r0\n" },
106:
107: { 2, "_mtpr\n",
108: " movl (sp)+,r4\n\
109: movl (sp)+,r5\n\
110: mtpr r5,r4\n" },
111:
112: { 0, "_setsoftclock\n",
113: " mtpr $0x8,$0x14\n" },
114:
115: { 1, "_resume\n",
116: " movl (sp)+,r5\n\
117: ashl $9,r5,r0\n\
118: movpsl -(sp)\n\
119: jsb _Resume\n" },
120:
121: { 3, "_copyin\n",
122: " movl (sp)+,r1\n\
123: movl (sp)+,r3\n\
124: movl (sp)+,r5\n\
125: jsb _Copyin\n" },
126:
127: { 3, "_copyout\n",
128: " movl (sp)+,r1\n\
129: movl (sp)+,r3\n\
130: movl (sp)+,r5\n\
131: jsb _Copyout\n" },
132:
133: { 1, "_fubyte\n",
134: " movl (sp)+,r0\n\
135: jsb _Fubyte\n" },
136:
137: { 1, "_fuibyte\n",
138: " movl (sp)+,r0\n\
139: jsb _Fubyte\n" },
140:
141: { 1, "_fuword\n",
142: " movl (sp)+,r0\n\
143: jsb _Fuword\n" },
144:
145: { 1, "_fuiword\n",
146: " movl (sp)+,r0\n\
147: jsb _Fuword\n" },
148:
149: { 2, "_subyte\n",
150: " movl (sp)+,r0\n\
151: movl (sp)+,r1\n\
152: jsb _Subyte\n" },
153:
154: { 2, "_suibyte\n",
155: " movl (sp)+,r0\n\
156: movl (sp)+,r1\n\
157: jsb _Subyte\n" },
158:
159: { 2, "_suword\n",
160: " movl (sp)+,r0\n\
161: movl (sp)+,r1\n\
162: jsb _Suword\n" },
163:
164: { 2, "_suiword\n",
165: " movl (sp)+,r0\n\
166: movl (sp)+,r1\n\
167: jsb _Suword\n" },
168:
169: { 1, "_setrq\n",
170: " movl (sp)+,r0\n\
171: jsb _Setrq\n" },
172:
173: { 1, "_remrq\n",
174: " movl (sp)+,r0\n\
175: jsb _Remrq\n" },
176:
177: { 0, "_swtch\n",
178: " movpsl -(sp)\n\
179: jsb _Swtch\n" },
180:
181: { 1, "_ffs\n",
182: " movl (sp)+,r1\n\
183: ffs $0,$32,r1,r0\n\
184: bneq 1f\n\
185: mnegl $1,r0\n\
186: 1:\n\
187: incl r0\n" },
188:
189: { 1, "_htons\n",
190: " movl (sp)+,r5\n\
191: rotl $8,r5,r0\n\
192: rotl $-8,r5,r1\n\
193: movb r1,r0\n\
194: movzwl r0,r0\n" },
195:
196: { 1, "_ntohs\n",
197: " movl (sp)+,r5\n\
198: rotl $8,r5,r0\n\
199: rotl $-8,r5,r1\n\
200: movb r1,r0\n\
201: movzwl r0,r0\n" },
202:
203: { 1, "_htonl\n",
204: " movl (sp)+,r5\n\
205: rotl $-8,r5,r0\n\
206: insv r0,$16,$8,r0\n\
207: rotl $8,r5,r1\n\
208: movb r1,r0\n" },
209:
210: { 1, "_ntohl\n",
211: " movl (sp)+,r5\n\
212: rotl $-8,r5,r0\n\
213: insv r0,$16,$8,r0\n\
214: rotl $8,r5,r1\n\
215: movb r1,r0\n" },
216:
217: { 2, "__insque\n",
218: " movl (sp)+,r4\n\
219: movl (sp)+,r5\n\
220: insque (r4),(r5)\n" },
221:
222: { 1, "__remque\n",
223: " movl (sp)+,r5\n\
224: remque (r5),r0\n" },
225:
226: { 2, "__queue\n",
227: " movl (sp)+,r0\n\
228: movl (sp)+,r1\n\
229: insque (r1),*4(r0)\n" },
230:
231: { 1, "__dequeue\n",
232: " movl (sp)+,r0\n\
233: remque *(r0),r0\n" },
234:
235: { 2, "_imin\n",
236: " movl (sp)+,r0\n\
237: movl (sp)+,r5\n\
238: cmpl r0,r5\n\
239: bleq 1f\n\
240: movl r5,r0\n\
241: 1:\n" },
242:
243: { 2, "_imax\n",
244: " movl (sp)+,r0\n\
245: movl (sp)+,r5\n\
246: cmpl r0,r5\n\
247: bgeq 1f\n\
248: movl r5,r0\n\
249: 1:\n" },
250:
251: { 2, "_min\n",
252: " movl (sp)+,r0\n\
253: movl (sp)+,r5\n\
254: cmpl r0,r5\n\
255: blequ 1f\n\
256: movl r5,r0\n\
257: 1:\n" },
258:
259: { 2, "_max\n",
260: " movl (sp)+,r0\n\
261: movl (sp)+,r5\n\
262: cmpl r0,r5\n\
263: bgequ 1f\n\
264: movl r5,r0\n\
265: 1:\n" },
266: #endif vax
267:
268: #ifdef mc68000
269: /* someday... */
270: #endif mc68000
271:
272: { 0, "", "" }
273: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.