Lines Matching +full:big +full:- +full:endian +full:- +full:regs
1 /* refclock_psc.c: clock driver for Brandywine PCI-SyncClock32/HP-UX 11.X */
67 #define PRECISION (-20) /* precision assumed (1 us) */
69 #define DESCRIPTION "Brandywine PCI-SyncClock32"
116 /* get the address of the mapped regs */ in psc_start()
123 pp = peer->procptr; in psc_start()
124 pp->io.clock_recv = noentry; in psc_start()
125 pp->io.srcclock = peer; in psc_start()
126 pp->io.datalen = 0; in psc_start()
127 pp->io.fd = -1; in psc_start()
128 pp->unitptr = up; in psc_start()
129 get_systime(&pp->lastrec); in psc_start()
130 memcpy(&pp->refid, REFID, 4); in psc_start()
131 peer->precision = PRECISION; in psc_start()
132 pp->clockdesc = DESCRIPTION; in psc_start()
133 up->unit = unit; in psc_start()
148 if (NULL != peer->procptr->unitptr) in psc_shutdown()
149 free(peer->procptr->unitptr); in psc_shutdown()
161 struct refclockproc *pp = peer->procptr; in psc_poll()
166 up = (struct psc_unit *) pp->unitptr; in psc_poll()
167 tlo = regp[unit]->low_time; /* latch and read first 4 bytes */ in psc_poll()
168 thi = regp[unit]->high_time; /* read 4 higher order bytes */ in psc_poll()
169 status = regp[unit]->device_status; /* read device status byte */ in psc_poll()
173 if (!up->msg_flag[unit]) { /* write once to system log */ in psc_poll()
177 up->msg_flag[unit] = 1; in psc_poll()
182 get_systime(&pp->lastrec); in psc_poll()
183 pp->polls++; in psc_poll()
185 tlo = SWAP(tlo); /* little to big endian swap on */ in psc_poll()
188 pp->day = BCD2INT3((thi & 0x0FFF0000) >> 16); in psc_poll()
189 pp->hour = BCD2INT2((thi & 0x0000FF00) >> 8); in psc_poll()
190 pp->minute = BCD2INT2(thi & 0x000000FF); in psc_poll()
191 pp->second = BCD2INT2(tlo >> 24); in psc_poll()
194 pp->nsec = 1000000*BCD2INT3((tlo & 0x00FFF000) >> 12) + in psc_poll()
197 snprintf(pp->a_lastcode, sizeof(pp->a_lastcode), in psc_poll()
198 "%3.3d %2.2d:%2.2d:%2.2d.%09ld %02x %08x %08x", pp->day, in psc_poll()
199 pp->hour, pp->minute, pp->second, pp->nsec, status, thi, in psc_poll()
201 pp->lencode = strlen(pp->a_lastcode); in psc_poll()
211 record_clock_stats(&peer->srcadr, pp->a_lastcode); in psc_poll()
215 if (pp->hour < up->last_hour) { in psc_poll()
217 up->msg_flag[0] = up->msg_flag[1] = 0; /* reset flags */ in psc_poll()
219 up->last_hour = pp->hour; in psc_poll()
226 a leap second pending, so we set the pp->leap flag to LEAP_ADDSECOND.
227 If the BCD data are zero or a date other than today, set pp->leap to
235 regp[unit]->dp_ram_addr = DP_LEAPSEC_DAY10DAY1; in check_leap_sec()
237 dlo = regp[unit]->dp_ram_data; in check_leap_sec()
238 regp[unit]->dp_ram_addr = DP_LEAPSEC_DAY1000DAY100; in check_leap_sec()
240 dhi = regp[unit]->dp_ram_data; in check_leap_sec()
243 pp->leap = LEAP_NOWARNING; /* default */ in check_leap_sec()
244 if (leap_day && leap_day == pp->day) { in check_leap_sec()
245 pp->leap = LEAP_ADDSECOND; /* leap second today */ in check_leap_sec()