xref: /csrg-svn/sys/ufs/ffs/ffs_tables.c (revision 5323)
14462Smckusick /* Copyright (c) 1981 Regents of the University of California */
24462Smckusick 
3*5323Smckusic /* @(#)ffs_tables.c 1.3 01/05/82 */
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 
164473Smckusic 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 /*
71*5323Smckusic  * given a block map bit pattern, the frag tables tell whether a
724462Smckusick  * particular size fragment is available.
73*5323Smckusic  *
744462Smckusick  * used as:
75*5323Smckusic  * if ((1 << (size - 1)) & fragtbl[fs->fs_frag][map] {
764462Smckusick  *	at least one fragment of the indicated size is available
774462Smckusick  * }
78*5323Smckusic  *
79*5323Smckusic  * These tables are used by the scanc instruction on the VAX to
804462Smckusick  * quickly find an appropriate fragment.
814462Smckusick  */
82*5323Smckusic 
83*5323Smckusic unsigned char fragtbl1[256] = {
84*5323Smckusic 	0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
85*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
86*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
87*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
88*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
89*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
90*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
91*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
92*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
93*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
94*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
95*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
96*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
97*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
98*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
99*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
100*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
101*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
102*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
103*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
104*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
105*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
106*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
107*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
108*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
109*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
110*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
111*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
112*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
113*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
114*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
115*5323Smckusic 	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
116*5323Smckusic };
117*5323Smckusic 
118*5323Smckusic unsigned char fragtbl2[256] = {
119*5323Smckusic 	0x0, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x3,
120*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x2, 0x3, 0x3, 0x2,
121*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
122*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
123*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
124*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
125*5323Smckusic 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3,
126*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2,
127*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
128*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
129*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
130*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
131*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
132*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
133*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
134*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
135*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
136*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
137*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
138*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
139*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
140*5323Smckusic 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
141*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
142*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
143*5323Smckusic 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3,
144*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2,
145*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
146*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
147*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
148*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
149*5323Smckusic 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3,
150*5323Smckusic 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2,
151*5323Smckusic };
152*5323Smckusic 
153*5323Smckusic unsigned char fragtbl4[256] = {
1544462Smckusick 	0x0, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4,
1554462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x2, 0x3, 0x4, 0x8,
1564462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
1574462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1584462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
1594462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1604462Smckusick 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
1614462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
1624462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
1634462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1644462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
1654462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1664462Smckusick 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
1674462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
1684462Smckusick 	0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4,
1694462Smckusick 	0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc,
1704462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
1714462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1724462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
1734462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1744462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
1754462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
1764462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7,
1774462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb,
1784462Smckusick 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
1794462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
1804462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7,
1814462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb,
1824462Smckusick 	0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4,
1834462Smckusick 	0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc,
1844462Smckusick 	0x8, 0x9, 0x9, 0xa, 0x9, 0x9, 0xa, 0xc,
1854462Smckusick 	0x9, 0x9, 0x9, 0xb, 0xa, 0xb, 0xc, 0x8,
1864462Smckusick };
1874462Smckusick 
188*5323Smckusic unsigned char fragtbl8[256] = {
1894462Smckusick 	0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04,
1904462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x02, 0x03, 0x04, 0x08,
1914462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1924462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x04, 0x05, 0x08, 0x10,
1934462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1944462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
1954462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
1964462Smckusick 	0x04, 0x05, 0x05, 0x06, 0x08, 0x09, 0x10, 0x20,
1974462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
1984462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
1994462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
2004462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
2014462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
2024462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
2034462Smckusick 	0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
2044462Smckusick 	0x08, 0x09, 0x09, 0x0a, 0x10, 0x11, 0x20, 0x40,
2054462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
2064462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
2074462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
2084462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
2094462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
2104462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
2114462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
2124462Smckusick 	0x05, 0x05, 0x05, 0x07, 0x09, 0x09, 0x11, 0x21,
2134462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
2144462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
2154462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
2164462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x06, 0x07, 0x0a, 0x12,
2174462Smckusick 	0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
2184462Smckusick 	0x05, 0x05, 0x05, 0x07, 0x06, 0x07, 0x04, 0x0c,
2194462Smckusick 	0x08, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0c,
2204462Smckusick 	0x10, 0x11, 0x11, 0x12, 0x20, 0x21, 0x40, 0x80,
2214462Smckusick };
222*5323Smckusic 
223*5323Smckusic /*
224*5323Smckusic  * the actual fragtbl array
225*5323Smckusic  */
226*5323Smckusic unsigned char *fragtbl[MAXFRAG + 1] = {
227*5323Smckusic 	0, fragtbl1, fragtbl2, 0, fragtbl4, 0, 0, 0, fragtbl8,
228*5323Smckusic };
229