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