xref: /csrg-svn/sys/ufs/ffs/ffs_tables.c (revision 4473)
14462Smckusick /* Copyright (c) 1981 Regents of the University of California */
24462Smckusick 
3*4473Smckusic /* @(#)ffs_tables.c 1.2 10/07/81 */
44462Smckusick 
54462Smckusick #include "../h/param.h"
64462Smckusick 
74462Smckusick /*	partab.c	4.2	81/03/08	*/
84462Smckusick 
94462Smckusick /*
104462Smckusick  * Table giving parity for characters and indicating
114462Smckusick  * character classes to tty driver.  In particular,
124462Smckusick  * if the low 6 bits are 0, then the character needs
134462Smckusick  * no special processing on output.
144462Smckusick  */
154462Smckusick 
16*4473Smckusic unsigned char partab[] = {
174462Smckusick 	0001,0201,0201,0001,0201,0001,0001,0201,
184462Smckusick 	0202,0004,0003,0201,0005,0206,0201,0001,
194462Smckusick 	0201,0001,0001,0201,0001,0201,0201,0001,
204462Smckusick 	0001,0201,0201,0001,0201,0001,0001,0201,
214462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
224462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
234462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
244462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
254462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
264462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
274462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
284462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
294462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
304462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
314462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
324462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0201,
334462Smckusick 
344462Smckusick 	/*
354462Smckusick 	 * 7 bit ascii ends with the last character above,
364462Smckusick 	 * but we contine through all 256 codes for the sake
374462Smckusick 	 * of the tty output routines which use special vax
384462Smckusick 	 * instructions which need a 256 character trt table.
394462Smckusick 	 */
404462Smckusick 
414462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
424462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
434462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
444462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
454462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
464462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
474462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
484462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
494462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
504462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
514462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
524462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
534462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
544462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
554462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
564462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007
574462Smckusick };
584462Smckusick 
594462Smckusick /*
604462Smckusick  * bit patterns for identifying fragments in the block map
614462Smckusick  * used as ((map & around) == inside)
624462Smckusick  */
634462Smckusick int around[9] = {
644462Smckusick 	0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff, 0x1ff, 0x3ff
654462Smckusick };
664462Smckusick int inside[9] = {
674462Smckusick 	0x0, 0x2, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe
684462Smckusick };
694462Smckusick 
704462Smckusick /*
714462Smckusick  * given a block map bit pattern, this table tells whether a
724462Smckusick  * particular size fragment is available.
734462Smckusick  * used as:
744462Smckusick  * if ((1 << (size - 1)) & fragtbl[map]) {
754462Smckusick  *	at least one fragment of the indicated size is available
764462Smckusick  * }
774462Smckusick  * This table is used by the scanc instruction on the VAX to
784462Smckusick  * quickly find an appropriate fragment.
794462Smckusick  */
804462Smckusick #if FRAG == 4
81*4473Smckusic unsigned char fragtbl[256] = {
824462Smckusick 	0x0, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4,
834462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x2, 0x3, 0x4, 0x8,
844462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
854462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
864462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
874462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
884462Smckusick 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
894462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
904462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
914462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
924462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
934462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
944462Smckusick 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
954462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
964462Smckusick 	0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4,
974462Smckusick 	0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc,
984462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
994462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1004462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
1014462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1024462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
1034462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1044462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7,
1054462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb,
1064462Smckusick 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
1074462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
1084462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7,
1094462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb,
1104462Smckusick 	0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4,
1114462Smckusick 	0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc,
1124462Smckusick 	0x8, 0x9, 0x9, 0xa, 0x9, 0x9, 0xa, 0xc,
1134462Smckusick 	0x9, 0x9, 0x9, 0xb, 0xa, 0xb, 0xc, 0x8,
1144462Smckusick };
1154462Smckusick #endif
1164462Smckusick 
1174462Smckusick #if FRAG == 8
118*4473Smckusic unsigned char fragtbl[256] = {
1194462Smckusick 	0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04,
1204462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x02, 0x03, 0x04, 0x08,
1214462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1224462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x04, 0x05, 0x08, 0x10,
1234462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1244462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
1254462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
1264462Smckusick 	0x04, 0x05, 0x05, 0x06, 0x08, 0x09, 0x10, 0x20,
1274462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1284462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
1294462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1304462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
1314462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
1324462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
1334462Smckusick 	0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
1344462Smckusick 	0x08, 0x09, 0x09, 0x0a, 0x10, 0x11, 0x20, 0x40,
1354462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1364462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
1374462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1384462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
1394462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1404462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
1414462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
1424462Smckusick 	0x05, 0x05, 0x05, 0x07, 0x09, 0x09, 0x11, 0x21,
1434462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
1444462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
1454462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
1464462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x06, 0x07, 0x0a, 0x12,
1474462Smckusick 	0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
1484462Smckusick 	0x05, 0x05, 0x05, 0x07, 0x06, 0x07, 0x04, 0x0c,
1494462Smckusick 	0x08, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0c,
1504462Smckusick 	0x10, 0x11, 0x11, 0x12, 0x20, 0x21, 0x40, 0x80,
1514462Smckusick };
1524462Smckusick #endif
153