FROMBCD
dt->dt_sec = FROMBCD(chiptime[MK_SEC] >> 24);
dt->dt_min = FROMBCD(chiptime[MK_MIN] >> 24);
dt->dt_hour = FROMBCD(chiptime[MK_HOUR] >> 24);
dt->dt_wday = FROMBCD(chiptime[MK_DOW] >> 24);
dt->dt_day = FROMBCD(chiptime[MK_DOM] >> 24);
dt->dt_mon = FROMBCD(chiptime[MK_MONTH] >> 24);
dt->dt_year = FROMBCD(chiptime[MK_YEAR] >> 24);
c = *chipdata; (data) = FROMBCD(c); \
dt.dt_year = 2000 + FROMBCD(cmd->data[6]);
dt.dt_mon = FROMBCD(cmd->data[5]);
dt.dt_day = FROMBCD(cmd->data[4]);
dt.dt_hour = FROMBCD(cmd->data[2]);
dt.dt_min = FROMBCD(cmd->data[1]);
dt.dt_sec = FROMBCD(cmd->data[0]);
((tod[5] & 0x80) ? 2000 : 1900) + FROMBCD(tod[6]), /* year */
FROMBCD(tod[5] & 0x1f), /* month */
FROMBCD(tod[4] & 0x3f), /* day */
FROMBCD(tod[2] & 0x3f), /* hour */
FROMBCD(tod[1] & 0x7f), /* minute */
FROMBCD(tod[0] & 0x7f))); /* second */
dt.dt_year = ((tod[5] & 0x80) ? 2000 : 1900) + FROMBCD(tod[6]);
dt.dt_mon = FROMBCD(tod[5] & 0x1f);
dt.dt_day = FROMBCD(tod[4] & 0x3f);
dt.dt_hour = FROMBCD(tod[2] & 0x3f);
dt.dt_min = FROMBCD(tod[1] & 0x7f);
dt.dt_sec = FROMBCD(tod[0] & 0x7f);
dt.dt_sec = FROMBCD((time >> 40) & 0xff);
dt.dt_min = FROMBCD((time >> 48) & 0xff);
dt.dt_hour = FROMBCD((time >> 56) & 0xff);
dt.dt_day = FROMBCD((date >> 0) & 0xff);
dt.dt_mon = FROMBCD((date >> 8) & 0xff);
dt.dt_year = FROMBCD((date >> 16) & 0xff);
dt.dt_year += 100 * FROMBCD((date >> 24) & 0xff);
dt->dt_year = FROMBCD(_reg_read_1(SH3_RYRCNT));
dt->dt_year = FROMBCD(_reg_read_2(SH4_RYRCNT) & 0x00ff);
#define RTCGET(x, y) dt->dt_ ## x = FROMBCD(_reg_read_1(SH_(R ## y ## CNT)))
dt.dt_sec = FROMBCD(bus_space_read_1(iot, ioh, BQ4802_SEC));
dt.dt_min = FROMBCD(bus_space_read_1(iot, ioh, BQ4802_MIN));
dt.dt_hour = FROMBCD(bus_space_read_1(iot, ioh, BQ4802_HOUR));
dt.dt_day = FROMBCD(bus_space_read_1(iot, ioh, BQ4802_DAY));
dt.dt_wday = FROMBCD(bus_space_read_1(iot, ioh, BQ4802_DOW));
dt.dt_mon = FROMBCD(bus_space_read_1(iot, ioh, BQ4802_MONTH));
dt.dt_year = FROMBCD(bus_space_read_1(iot, ioh, BQ4802_YEAR)) +
FROMBCD(bus_space_read_1(iot, ioh, BQ4802_CENTURY)) * 100;
dt->dt_sec = FROMBCD(acrtc_read_reg(sc, RTC_SEC) & RTC_SEC_MASK);
dt->dt_min = FROMBCD(acrtc_read_reg(sc, RTC_MIN) & RTC_MIN_MASK);
dt->dt_hour = FROMBCD(acrtc_read_reg(sc, RTC_HOU) & RTC_HOU_MASK);
dt->dt_day = FROMBCD(acrtc_read_reg(sc, RTC_DAY) & RTC_DAY_MASK);
dt->dt_mon = FROMBCD(acrtc_read_reg(sc, RTC_MON) & RTC_MON_MASK);
dt->dt_year = FROMBCD(acrtc_read_reg(sc, RTC_YEA) & RTC_YEA_MASK);
dt.dt_sec = FROMBCD(HREAD4(sc, RTCSEC));
dt.dt_min = FROMBCD(HREAD4(sc, RTCMIN));
dt.dt_hour = FROMBCD(HREAD4(sc, RTCHOUR));
dt.dt_day = FROMBCD(HREAD4(sc, RTCDAY));
dt.dt_mon = FROMBCD(HREAD4(sc, RTCMON));
dt.dt_year = FROMBCD(HREAD4(sc, RTCYEAR)) + 1900;
if (dt.dt_sec > FROMBCD(HREAD4(sc, RTCSEC)) && !retried) {
dt->dt_sec = FROMBCD(regs[0]);
dt->dt_min = FROMBCD(regs[1]);
dt->dt_hour = FROMBCD(regs[2]);
dt->dt_day = FROMBCD(regs[3]);
dt->dt_mon = FROMBCD(regs[4]);
dt->dt_year = FROMBCD(regs[5]) + 2000;
if ((ymdhm.dt_year = 2000 + FROMBCD(year_bits)) > 2037) {
ymdhm.dt_min = FROMBCD(minute_bits);
ymdhm.dt_hour = FROMBCD(hour_bits);
ymdhm.dt_day = FROMBCD(day_bits);
ymdhm.dt_mon = FROMBCD(month_bits);
dt->dt_sec = FROMBCD(regs[1] & 0x7f);
dt->dt_min = FROMBCD(regs[2] & 0x7f);
dt->dt_hour = FROMBCD(regs[3] & 0x3f);
dt->dt_day = FROMBCD(regs[4] & 0x3f);
dt->dt_mon = FROMBCD(regs[5] & 0x1f);
dt->dt_year = FROMBCD(regs[6]) + 2000;
dt.dt_sec = FROMBCD(data[DS1307_SEC_REG] & DS1307_SEC_MASK);
dt.dt_min = FROMBCD(data[DS1307_MIN_REG] & DS1307_MIN_MASK);
dt.dt_hour = FROMBCD(data[DS1307_HOUR_REG] & DS1307_HOUR_MASK);
dt.dt_wday = FROMBCD(data[DS1307_WDAY_REG] & DS1307_WDAY_MASK);
dt.dt_day = FROMBCD(data[DS1307_DATE_REG] & DS1307_DATE_MASK);
dt.dt_mon = FROMBCD(data[DS1307_MONTH_REG] & DS1307_MONTH_MASK);
dt.dt_year = FROMBCD(data[DS1307_YEAR_REG] & DS1307_YEAR_MASK) + 2000;
dt->dt_sec = FROMBCD(regs[0]);
dt->dt_min = FROMBCD(regs[1]);
dt->dt_hour = FROMBCD(regs[2] & DS3231_HR_12_MASK);
dt->dt_hour = FROMBCD(regs[2]);
dt->dt_day = FROMBCD(regs[4]);
dt->dt_mon = FROMBCD(regs[5] & DS3231_MO_MASK);
dt->dt_year = FROMBCD(regs[6]) + 2000;
dt->dt_sec = FROMBCD(regs[0]);
dt->dt_min = FROMBCD(regs[1]);
dt->dt_hour = FROMBCD(regs[2] & ~ISL1208_HR_MIL);
dt->dt_hour = FROMBCD(regs[2] & ~ISL1208_HR_HR21);
dt->dt_day = FROMBCD(regs[3]);
dt->dt_mon = FROMBCD(regs[4]);
dt->dt_year = FROMBCD(regs[5]) + 2000;
dt.dt_sec = FROMBCD(data[M41T8X_SEC] & ~M41T8X_STOP);
dt.dt_min = FROMBCD(data[M41T8X_MIN]);
dt.dt_hour = FROMBCD(data[M41T8X_HR] & ~(M41T8X_CEB | M41T8X_CB));
dt.dt_day = FROMBCD(data[M41T8X_DAY]);
dt.dt_mon = FROMBCD(data[M41T8X_MON]);
dt.dt_year = FROMBCD(data[M41T8X_YEAR]) + 2000;
dt->dt_sec = FROMBCD(regs[0] & 0x7f);
dt->dt_min = FROMBCD(regs[1] & 0x7f);
dt->dt_hour = FROMBCD(regs[2] & 0x1f);
dt->dt_wday = FROMBCD(regs[3] & 0x7);
dt->dt_day = FROMBCD(regs[4] & 0x3f);
dt->dt_mon = FROMBCD(regs[5] & 0x1f);
dt->dt_year = FROMBCD(regs[6]) + 2000;
dt->dt_sec = FROMBCD(regs[0] & PCF85063_SECONDS_MASK);
dt->dt_min = FROMBCD(regs[1] & PCF85063_MINUTES_MASK);
dt->dt_hour = FROMBCD(regs[2] & PCF85063_HOURS_24MASK);
dt->dt_day = FROMBCD(regs[3] & PCF85063_DAY_MASK);
dt->dt_mon = FROMBCD(regs[5] & PCF85063_MONTH_MASK);
dt->dt_year = FROMBCD(regs[6]) + 2000;
dt->dt_sec = FROMBCD(regs[0] & PCF8523_SECONDS_MASK);
dt->dt_min = FROMBCD(regs[1] & PCF8523_MINUTES_MASK);
dt->dt_hour = FROMBCD(regs[2] & PCF8523_HOURS_24MASK);
dt->dt_day = FROMBCD(regs[3] & PCF8523_DAY_MASK);
dt->dt_mon = FROMBCD(regs[5] & PCF8523_MONTH_MASK);
dt->dt_year = FROMBCD(regs[6]) + 2000;
dt->dt_sec = FROMBCD(regs[0] & PCF8563_SECONDS_MASK);
dt->dt_min = FROMBCD(regs[1] & PCF8563_MINUTES_MASK);
dt->dt_hour = FROMBCD(regs[2] & PCF8563_HOURS_MASK);
dt->dt_day = FROMBCD(regs[3] & PCF8563_DAY_MASK);
dt->dt_mon = FROMBCD(regs[5] & PCF8563_MONTH_MASK);
dt->dt_year = FROMBCD(regs[6]) + 2000;
dt->dt_sec = FROMBCD(bcd[RICOHRTC_SECONDS] & RICOHRTC_SECONDS_MASK);
dt->dt_min = FROMBCD(bcd[RICOHRTC_MINUTES] & RICOHRTC_MINUTES_MASK);
dt->dt_hour = FROMBCD(bcd[RICOHRTC_HOURS] & RICOHRTC_HOURS_24MASK);
dt->dt_day = FROMBCD(bcd[RICOHRTC_DATE] & RICOHRTC_DATE_MASK);
dt->dt_mon = FROMBCD(bcd[RICOHRTC_MONTH] & RICOHRTC_MONTH_MASK);
dt->dt_year = FROMBCD(bcd[RICOHRTC_YEAR]) + POSIX_BASE_YEAR;
dt.dt_sec = FROMBCD(bus_space_read_1(bt, bh, clkoff + MK48TXX_ISEC));
dt.dt_min = FROMBCD(bus_space_read_1(bt, bh, clkoff + MK48TXX_IMIN));
dt.dt_hour = FROMBCD(bus_space_read_1(bt, bh, clkoff + MK48TXX_IHOUR));
dt.dt_day = FROMBCD(bus_space_read_1(bt, bh, clkoff + MK48TXX_IDAY));
dt.dt_wday = FROMBCD(bus_space_read_1(bt, bh, clkoff + MK48TXX_IWDAY));
dt.dt_mon = FROMBCD(bus_space_read_1(bt, bh, clkoff + MK48TXX_IMON));
year = FROMBCD(bus_space_read_1(bt, bh, clkoff + MK48TXX_IYEAR));
if ((ymdhm.dt_year = 2000 + FROMBCD(year_bits)) > 2037) {
ymdhm.dt_min = FROMBCD(minute_bits);
ymdhm.dt_hour = FROMBCD(hour_bits);
ymdhm.dt_day = FROMBCD(day_bits);
ymdhm.dt_mon = FROMBCD(month_bits);