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