1/*	$NetBSD: timevalops.c,v 1.5 2020/05/25 20:47:24 christos Exp $	*/
2
3/*
4 * timevalops.c -- calculations on 'struct timeval' values
5 *
6 * Written by Juergen Perlinger (perlinger@ntp.org) for the NTP project.
7 * The contents of 'html/copyright.html' apply.
8 */
9
10#include <config.h>
11
12#include "timevalops.h"
13
14#ifdef USE_TSF_USEC_TABLES
15/*
16 * Tables to calculate time stamp fractions from usecs.  The entries
17 * in these tables are offset into using each of the two low order
18 * bytes plus the next 4 bits in a usec value (from a struct timeval).
19 * These are summed to produce the time stamp fraction.
20 *
21 * Note that these tables are rounded (not truncated) to the nearest
22 * low order bit in the fraction.  The timestamp computed should be
23 * +- 1.5 low order bits.
24 */
25
26const u_int32 ustotslo[256] = {
27	0x00000000, 0x000010c7, 0x0000218e, 0x00003255,
28	0x0000431c, 0x000053e3, 0x000064aa, 0x00007571,
29	0x00008638, 0x000096ff, 0x0000a7c6, 0x0000b88d,
30	0x0000c954, 0x0000da1b, 0x0000eae2, 0x0000fba9,
31	0x00010c6f, 0x00011d36, 0x00012dfd, 0x00013ec4,
32	0x00014f8b, 0x00016052, 0x00017119, 0x000181e0,
33	0x000192a7, 0x0001a36e, 0x0001b435, 0x0001c4fc,
34	0x0001d5c3, 0x0001e68a, 0x0001f751, 0x00020818,
35	0x000218df, 0x000229a6, 0x00023a6d, 0x00024b34,
36	0x00025bfb, 0x00026cc2, 0x00027d89, 0x00028e50,
37	0x00029f17, 0x0002afde, 0x0002c0a5, 0x0002d16c,
38	0x0002e233, 0x0002f2fa, 0x000303c0, 0x00031487,
39	0x0003254e, 0x00033615, 0x000346dc, 0x000357a3,
40	0x0003686a, 0x00037931, 0x000389f8, 0x00039abf,
41	0x0003ab86, 0x0003bc4d, 0x0003cd14, 0x0003dddb,
42	0x0003eea2, 0x0003ff69, 0x00041030, 0x000420f7,
43	0x000431be, 0x00044285, 0x0004534c, 0x00046413,
44	0x000474da, 0x000485a1, 0x00049668, 0x0004a72f,
45	0x0004b7f6, 0x0004c8bd, 0x0004d984, 0x0004ea4b,
46	0x0004fb12, 0x00050bd8, 0x00051c9f, 0x00052d66,
47	0x00053e2d, 0x00054ef4, 0x00055fbb, 0x00057082,
48	0x00058149, 0x00059210, 0x0005a2d7, 0x0005b39e,
49	0x0005c465, 0x0005d52c, 0x0005e5f3, 0x0005f6ba,
50	0x00060781, 0x00061848, 0x0006290f, 0x000639d6,
51	0x00064a9d, 0x00065b64, 0x00066c2b, 0x00067cf2,
52	0x00068db9, 0x00069e80, 0x0006af47, 0x0006c00e,
53	0x0006d0d5, 0x0006e19c, 0x0006f263, 0x0007032a,
54	0x000713f0, 0x000724b7, 0x0007357e, 0x00074645,
55	0x0007570c, 0x000767d3, 0x0007789a, 0x00078961,
56	0x00079a28, 0x0007aaef, 0x0007bbb6, 0x0007cc7d,
57	0x0007dd44, 0x0007ee0b, 0x0007fed2, 0x00080f99,
58	0x00082060, 0x00083127, 0x000841ee, 0x000852b5,
59	0x0008637c, 0x00087443, 0x0008850a, 0x000895d1,
60	0x0008a698, 0x0008b75f, 0x0008c826, 0x0008d8ed,
61	0x0008e9b4, 0x0008fa7b, 0x00090b41, 0x00091c08,
62	0x00092ccf, 0x00093d96, 0x00094e5d, 0x00095f24,
63	0x00096feb, 0x000980b2, 0x00099179, 0x0009a240,
64	0x0009b307, 0x0009c3ce, 0x0009d495, 0x0009e55c,
65	0x0009f623, 0x000a06ea, 0x000a17b1, 0x000a2878,
66	0x000a393f, 0x000a4a06, 0x000a5acd, 0x000a6b94,
67	0x000a7c5b, 0x000a8d22, 0x000a9de9, 0x000aaeb0,
68	0x000abf77, 0x000ad03e, 0x000ae105, 0x000af1cc,
69	0x000b0293, 0x000b1359, 0x000b2420, 0x000b34e7,
70	0x000b45ae, 0x000b5675, 0x000b673c, 0x000b7803,
71	0x000b88ca, 0x000b9991, 0x000baa58, 0x000bbb1f,
72	0x000bcbe6, 0x000bdcad, 0x000bed74, 0x000bfe3b,
73	0x000c0f02, 0x000c1fc9, 0x000c3090, 0x000c4157,
74	0x000c521e, 0x000c62e5, 0x000c73ac, 0x000c8473,
75	0x000c953a, 0x000ca601, 0x000cb6c8, 0x000cc78f,
76	0x000cd856, 0x000ce91d, 0x000cf9e4, 0x000d0aaa,
77	0x000d1b71, 0x000d2c38, 0x000d3cff, 0x000d4dc6,
78	0x000d5e8d, 0x000d6f54, 0x000d801b, 0x000d90e2,
79	0x000da1a9, 0x000db270, 0x000dc337, 0x000dd3fe,
80	0x000de4c5, 0x000df58c, 0x000e0653, 0x000e171a,
81	0x000e27e1, 0x000e38a8, 0x000e496f, 0x000e5a36,
82	0x000e6afd, 0x000e7bc4, 0x000e8c8b, 0x000e9d52,
83	0x000eae19, 0x000ebee0, 0x000ecfa7, 0x000ee06e,
84	0x000ef135, 0x000f01fc, 0x000f12c2, 0x000f2389,
85	0x000f3450, 0x000f4517, 0x000f55de, 0x000f66a5,
86	0x000f776c, 0x000f8833, 0x000f98fa, 0x000fa9c1,
87	0x000fba88, 0x000fcb4f, 0x000fdc16, 0x000fecdd,
88	0x000ffda4, 0x00100e6b, 0x00101f32, 0x00102ff9,
89	0x001040c0, 0x00105187, 0x0010624e, 0x00107315,
90	0x001083dc, 0x001094a3, 0x0010a56a, 0x0010b631
91};
92
93const u_int32 ustotsmid[256] = {
94	0x00000000, 0x0010c6f8, 0x00218def, 0x003254e7,
95	0x00431bdf, 0x0053e2d6, 0x0064a9ce, 0x007570c5,
96	0x008637bd, 0x0096feb5, 0x00a7c5ac, 0x00b88ca4,
97	0x00c9539c, 0x00da1a93, 0x00eae18b, 0x00fba882,
98	0x010c6f7a, 0x011d3672, 0x012dfd69, 0x013ec461,
99	0x014f8b59, 0x01605250, 0x01711948, 0x0181e03f,
100	0x0192a737, 0x01a36e2f, 0x01b43526, 0x01c4fc1e,
101	0x01d5c316, 0x01e68a0d, 0x01f75105, 0x020817fc,
102	0x0218def4, 0x0229a5ec, 0x023a6ce3, 0x024b33db,
103	0x025bfad3, 0x026cc1ca, 0x027d88c2, 0x028e4fb9,
104	0x029f16b1, 0x02afdda9, 0x02c0a4a0, 0x02d16b98,
105	0x02e23290, 0x02f2f987, 0x0303c07f, 0x03148777,
106	0x03254e6e, 0x03361566, 0x0346dc5d, 0x0357a355,
107	0x03686a4d, 0x03793144, 0x0389f83c, 0x039abf34,
108	0x03ab862b, 0x03bc4d23, 0x03cd141a, 0x03dddb12,
109	0x03eea20a, 0x03ff6901, 0x04102ff9, 0x0420f6f1,
110	0x0431bde8, 0x044284e0, 0x04534bd7, 0x046412cf,
111	0x0474d9c7, 0x0485a0be, 0x049667b6, 0x04a72eae,
112	0x04b7f5a5, 0x04c8bc9d, 0x04d98394, 0x04ea4a8c,
113	0x04fb1184, 0x050bd87b, 0x051c9f73, 0x052d666b,
114	0x053e2d62, 0x054ef45a, 0x055fbb51, 0x05708249,
115	0x05814941, 0x05921038, 0x05a2d730, 0x05b39e28,
116	0x05c4651f, 0x05d52c17, 0x05e5f30e, 0x05f6ba06,
117	0x060780fe, 0x061847f5, 0x06290eed, 0x0639d5e5,
118	0x064a9cdc, 0x065b63d4, 0x066c2acc, 0x067cf1c3,
119	0x068db8bb, 0x069e7fb2, 0x06af46aa, 0x06c00da2,
120	0x06d0d499, 0x06e19b91, 0x06f26289, 0x07032980,
121	0x0713f078, 0x0724b76f, 0x07357e67, 0x0746455f,
122	0x07570c56, 0x0767d34e, 0x07789a46, 0x0789613d,
123	0x079a2835, 0x07aaef2c, 0x07bbb624, 0x07cc7d1c,
124	0x07dd4413, 0x07ee0b0b, 0x07fed203, 0x080f98fa,
125	0x08205ff2, 0x083126e9, 0x0841ede1, 0x0852b4d9,
126	0x08637bd0, 0x087442c8, 0x088509c0, 0x0895d0b7,
127	0x08a697af, 0x08b75ea6, 0x08c8259e, 0x08d8ec96,
128	0x08e9b38d, 0x08fa7a85, 0x090b417d, 0x091c0874,
129	0x092ccf6c, 0x093d9664, 0x094e5d5b, 0x095f2453,
130	0x096feb4a, 0x0980b242, 0x0991793a, 0x09a24031,
131	0x09b30729, 0x09c3ce21, 0x09d49518, 0x09e55c10,
132	0x09f62307, 0x0a06e9ff, 0x0a17b0f7, 0x0a2877ee,
133	0x0a393ee6, 0x0a4a05de, 0x0a5accd5, 0x0a6b93cd,
134	0x0a7c5ac4, 0x0a8d21bc, 0x0a9de8b4, 0x0aaeafab,
135	0x0abf76a3, 0x0ad03d9b, 0x0ae10492, 0x0af1cb8a,
136	0x0b029281, 0x0b135979, 0x0b242071, 0x0b34e768,
137	0x0b45ae60, 0x0b567558, 0x0b673c4f, 0x0b780347,
138	0x0b88ca3e, 0x0b999136, 0x0baa582e, 0x0bbb1f25,
139	0x0bcbe61d, 0x0bdcad15, 0x0bed740c, 0x0bfe3b04,
140	0x0c0f01fc, 0x0c1fc8f3, 0x0c308feb, 0x0c4156e2,
141	0x0c521dda, 0x0c62e4d2, 0x0c73abc9, 0x0c8472c1,
142	0x0c9539b9, 0x0ca600b0, 0x0cb6c7a8, 0x0cc78e9f,
143	0x0cd85597, 0x0ce91c8f, 0x0cf9e386, 0x0d0aaa7e,
144	0x0d1b7176, 0x0d2c386d, 0x0d3cff65, 0x0d4dc65c,
145	0x0d5e8d54, 0x0d6f544c, 0x0d801b43, 0x0d90e23b,
146	0x0da1a933, 0x0db2702a, 0x0dc33722, 0x0dd3fe19,
147	0x0de4c511, 0x0df58c09, 0x0e065300, 0x0e1719f8,
148	0x0e27e0f0, 0x0e38a7e7, 0x0e496edf, 0x0e5a35d6,
149	0x0e6afcce, 0x0e7bc3c6, 0x0e8c8abd, 0x0e9d51b5,
150	0x0eae18ad, 0x0ebedfa4, 0x0ecfa69c, 0x0ee06d94,
151	0x0ef1348b, 0x0f01fb83, 0x0f12c27a, 0x0f238972,
152	0x0f34506a, 0x0f451761, 0x0f55de59, 0x0f66a551,
153	0x0f776c48, 0x0f883340, 0x0f98fa37, 0x0fa9c12f,
154	0x0fba8827, 0x0fcb4f1e, 0x0fdc1616, 0x0fecdd0e,
155	0x0ffda405, 0x100e6afd, 0x101f31f4, 0x102ff8ec,
156	0x1040bfe4, 0x105186db, 0x10624dd3, 0x107314cb,
157	0x1083dbc2, 0x1094a2ba, 0x10a569b1, 0x10b630a9
158};
159
160const u_int32 ustotshi[16] = {
161	0x00000000, 0x10c6f7a1, 0x218def41, 0x3254e6e2,
162	0x431bde83, 0x53e2d624, 0x64a9cdc4, 0x7570c565,
163	0x8637bd06, 0x96feb4a6, 0xa7c5ac47, 0xb88ca3e8,
164	0xc9539b89, 0xda1a9329, 0xeae18aca, 0xfba8826b
165};
166
167/*
168 * Tables to convert from a time stamp fraction to usecs.  Note that
169 * the units of these tables are actually (usec<<3).  We carry three
170 * guard bits so that the result can be properly truncated (or rounded)
171 * to be correct to the least significant bit.
172 *
173 * These tables are rounded.
174 */
175
176const u_int32 tstoushi[256] = {
177	0x000000, 0x007a12, 0x00f424, 0x016e36,
178	0x01e848, 0x02625a, 0x02dc6c, 0x03567e,
179	0x03d090, 0x044aa2, 0x04c4b4, 0x053ec6,
180	0x05b8d8, 0x0632ea, 0x06acfc, 0x07270e,
181	0x07a120, 0x081b32, 0x089544, 0x090f56,
182	0x098968, 0x0a037a, 0x0a7d8c, 0x0af79e,
183	0x0b71b0, 0x0bebc2, 0x0c65d4, 0x0cdfe6,
184	0x0d59f8, 0x0dd40a, 0x0e4e1c, 0x0ec82e,
185	0x0f4240, 0x0fbc52, 0x103664, 0x10b076,
186	0x112a88, 0x11a49a, 0x121eac, 0x1298be,
187	0x1312d0, 0x138ce2, 0x1406f4, 0x148106,
188	0x14fb18, 0x15752a, 0x15ef3c, 0x16694e,
189	0x16e360, 0x175d72, 0x17d784, 0x185196,
190	0x18cba8, 0x1945ba, 0x19bfcc, 0x1a39de,
191	0x1ab3f0, 0x1b2e02, 0x1ba814, 0x1c2226,
192	0x1c9c38, 0x1d164a, 0x1d905c, 0x1e0a6e,
193	0x1e8480, 0x1efe92, 0x1f78a4, 0x1ff2b6,
194	0x206cc8, 0x20e6da, 0x2160ec, 0x21dafe,
195	0x225510, 0x22cf22, 0x234934, 0x23c346,
196	0x243d58, 0x24b76a, 0x25317c, 0x25ab8e,
197	0x2625a0, 0x269fb2, 0x2719c4, 0x2793d6,
198	0x280de8, 0x2887fa, 0x29020c, 0x297c1e,
199	0x29f630, 0x2a7042, 0x2aea54, 0x2b6466,
200	0x2bde78, 0x2c588a, 0x2cd29c, 0x2d4cae,
201	0x2dc6c0, 0x2e40d2, 0x2ebae4, 0x2f34f6,
202	0x2faf08, 0x30291a, 0x30a32c, 0x311d3e,
203	0x319750, 0x321162, 0x328b74, 0x330586,
204	0x337f98, 0x33f9aa, 0x3473bc, 0x34edce,
205	0x3567e0, 0x35e1f2, 0x365c04, 0x36d616,
206	0x375028, 0x37ca3a, 0x38444c, 0x38be5e,
207	0x393870, 0x39b282, 0x3a2c94, 0x3aa6a6,
208	0x3b20b8, 0x3b9aca, 0x3c14dc, 0x3c8eee,
209	0x3d0900, 0x3d8312, 0x3dfd24, 0x3e7736,
210	0x3ef148, 0x3f6b5a, 0x3fe56c, 0x405f7e,
211	0x40d990, 0x4153a2, 0x41cdb4, 0x4247c6,
212	0x42c1d8, 0x433bea, 0x43b5fc, 0x44300e,
213	0x44aa20, 0x452432, 0x459e44, 0x461856,
214	0x469268, 0x470c7a, 0x47868c, 0x48009e,
215	0x487ab0, 0x48f4c2, 0x496ed4, 0x49e8e6,
216	0x4a62f8, 0x4add0a, 0x4b571c, 0x4bd12e,
217	0x4c4b40, 0x4cc552, 0x4d3f64, 0x4db976,
218	0x4e3388, 0x4ead9a, 0x4f27ac, 0x4fa1be,
219	0x501bd0, 0x5095e2, 0x510ff4, 0x518a06,
220	0x520418, 0x527e2a, 0x52f83c, 0x53724e,
221	0x53ec60, 0x546672, 0x54e084, 0x555a96,
222	0x55d4a8, 0x564eba, 0x56c8cc, 0x5742de,
223	0x57bcf0, 0x583702, 0x58b114, 0x592b26,
224	0x59a538, 0x5a1f4a, 0x5a995c, 0x5b136e,
225	0x5b8d80, 0x5c0792, 0x5c81a4, 0x5cfbb6,
226	0x5d75c8, 0x5defda, 0x5e69ec, 0x5ee3fe,
227	0x5f5e10, 0x5fd822, 0x605234, 0x60cc46,
228	0x614658, 0x61c06a, 0x623a7c, 0x62b48e,
229	0x632ea0, 0x63a8b2, 0x6422c4, 0x649cd6,
230	0x6516e8, 0x6590fa, 0x660b0c, 0x66851e,
231	0x66ff30, 0x677942, 0x67f354, 0x686d66,
232	0x68e778, 0x69618a, 0x69db9c, 0x6a55ae,
233	0x6acfc0, 0x6b49d2, 0x6bc3e4, 0x6c3df6,
234	0x6cb808, 0x6d321a, 0x6dac2c, 0x6e263e,
235	0x6ea050, 0x6f1a62, 0x6f9474, 0x700e86,
236	0x708898, 0x7102aa, 0x717cbc, 0x71f6ce,
237	0x7270e0, 0x72eaf2, 0x736504, 0x73df16,
238	0x745928, 0x74d33a, 0x754d4c, 0x75c75e,
239	0x764170, 0x76bb82, 0x773594, 0x77afa6,
240	0x7829b8, 0x78a3ca, 0x791ddc, 0x7997ee
241};
242
243const u_int32 tstousmid[256] = {
244	0x0000, 0x007a, 0x00f4, 0x016e, 0x01e8, 0x0262, 0x02dc, 0x0356,
245	0x03d1, 0x044b, 0x04c5, 0x053f, 0x05b9, 0x0633, 0x06ad, 0x0727,
246	0x07a1, 0x081b, 0x0895, 0x090f, 0x0989, 0x0a03, 0x0a7e, 0x0af8,
247	0x0b72, 0x0bec, 0x0c66, 0x0ce0, 0x0d5a, 0x0dd4, 0x0e4e, 0x0ec8,
248	0x0f42, 0x0fbc, 0x1036, 0x10b0, 0x112b, 0x11a5, 0x121f, 0x1299,
249	0x1313, 0x138d, 0x1407, 0x1481, 0x14fb, 0x1575, 0x15ef, 0x1669,
250	0x16e3, 0x175d, 0x17d8, 0x1852, 0x18cc, 0x1946, 0x19c0, 0x1a3a,
251	0x1ab4, 0x1b2e, 0x1ba8, 0x1c22, 0x1c9c, 0x1d16, 0x1d90, 0x1e0a,
252	0x1e84, 0x1eff, 0x1f79, 0x1ff3, 0x206d, 0x20e7, 0x2161, 0x21db,
253	0x2255, 0x22cf, 0x2349, 0x23c3, 0x243d, 0x24b7, 0x2531, 0x25ac,
254	0x2626, 0x26a0, 0x271a, 0x2794, 0x280e, 0x2888, 0x2902, 0x297c,
255	0x29f6, 0x2a70, 0x2aea, 0x2b64, 0x2bde, 0x2c59, 0x2cd3, 0x2d4d,
256	0x2dc7, 0x2e41, 0x2ebb, 0x2f35, 0x2faf, 0x3029, 0x30a3, 0x311d,
257	0x3197, 0x3211, 0x328b, 0x3306, 0x3380, 0x33fa, 0x3474, 0x34ee,
258	0x3568, 0x35e2, 0x365c, 0x36d6, 0x3750, 0x37ca, 0x3844, 0x38be,
259	0x3938, 0x39b3, 0x3a2d, 0x3aa7, 0x3b21, 0x3b9b, 0x3c15, 0x3c8f,
260	0x3d09, 0x3d83, 0x3dfd, 0x3e77, 0x3ef1, 0x3f6b, 0x3fe5, 0x405f,
261	0x40da, 0x4154, 0x41ce, 0x4248, 0x42c2, 0x433c, 0x43b6, 0x4430,
262	0x44aa, 0x4524, 0x459e, 0x4618, 0x4692, 0x470c, 0x4787, 0x4801,
263	0x487b, 0x48f5, 0x496f, 0x49e9, 0x4a63, 0x4add, 0x4b57, 0x4bd1,
264	0x4c4b, 0x4cc5, 0x4d3f, 0x4db9, 0x4e34, 0x4eae, 0x4f28, 0x4fa2,
265	0x501c, 0x5096, 0x5110, 0x518a, 0x5204, 0x527e, 0x52f8, 0x5372,
266	0x53ec, 0x5466, 0x54e1, 0x555b, 0x55d5, 0x564f, 0x56c9, 0x5743,
267	0x57bd, 0x5837, 0x58b1, 0x592b, 0x59a5, 0x5a1f, 0x5a99, 0x5b13,
268	0x5b8d, 0x5c08, 0x5c82, 0x5cfc, 0x5d76, 0x5df0, 0x5e6a, 0x5ee4,
269	0x5f5e, 0x5fd8, 0x6052, 0x60cc, 0x6146, 0x61c0, 0x623a, 0x62b5,
270	0x632f, 0x63a9, 0x6423, 0x649d, 0x6517, 0x6591, 0x660b, 0x6685,
271	0x66ff, 0x6779, 0x67f3, 0x686d, 0x68e7, 0x6962, 0x69dc, 0x6a56,
272	0x6ad0, 0x6b4a, 0x6bc4, 0x6c3e, 0x6cb8, 0x6d32, 0x6dac, 0x6e26,
273	0x6ea0, 0x6f1a, 0x6f94, 0x700f, 0x7089, 0x7103, 0x717d, 0x71f7,
274	0x7271, 0x72eb, 0x7365, 0x73df, 0x7459, 0x74d3, 0x754d, 0x75c7,
275	0x7641, 0x76bc, 0x7736, 0x77b0, 0x782a, 0x78a4, 0x791e, 0x7998
276};
277
278const u_int32 tstouslo[128] = {
279	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
280	0x08, 0x09, 0x0a, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
281	0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
282	0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e,
283	0x1f, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
284	0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
285	0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x33, 0x34,
286	0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
287	0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44,
288	0x45, 0x46, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
289	0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53,
290	0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b,
291	0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
292	0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a,
293	0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x71,
294	0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79
295};
296#else	/* !USE_TSF_USEC_TABLES follows */
297NONEMPTY_TRANSLATION_UNIT
298#endif	/* !USE_TSF_USEC_TABLES */
299/* -*- EOF -*- */
300