rtcdev
#define rtc_halted(vrtc) ((vrtc->rtcdev.reg_b & RTCSB_HALT) != 0)
#define aintr_enabled(vrtc) (((vrtc)->rtcdev.reg_b & RTCSB_AINTR) != 0)
#define pintr_enabled(vrtc) (((vrtc)->rtcdev.reg_b & RTCSB_PINTR) != 0)
#define uintr_enabled(vrtc) (((vrtc)->rtcdev.reg_b & RTCSB_UINTR) != 0)
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.sec, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.alarm_sec, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.min, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.alarm_min, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.hour, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.alarm_hour, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.day_of_week, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.day_of_month, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.month, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.year, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.reg_a, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.reg_b, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.reg_c, meta, ret, done);
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.reg_d, meta, ret, done);
SNAPSHOT_BUF_OR_LEAVE(vrtc->rtcdev.nvram, sizeof(vrtc->rtcdev.nvram),
SNAPSHOT_VAR_OR_LEAVE(vrtc->rtcdev.century, meta, ret, done);
SNAPSHOT_BUF_OR_LEAVE(vrtc->rtcdev.nvram2, sizeof(vrtc->rtcdev.nvram2),
if (!divider_enabled(vrtc->rtcdev.reg_a))
rtcset(struct rtcdev *rtc, int val)
struct rtcdev *rtc;
rtc = &vrtc->rtcdev;
rtcget(struct rtcdev *rtc, int val, int *retval)
struct rtcdev *rtc;
rtc = &vrtc->rtcdev;
struct rtcdev *rtc;
rtc = &vrtc->rtcdev;
if (pintr_enabled(vrtc) && divider_enabled(vrtc->rtcdev.reg_a)) {
ratesel = vrtc->rtcdev.reg_a & 0xf;
KASSERT((vrtc->rtcdev.reg_b & RTCSB_ALL_INTRS) != 0,
vrtc_set_reg_c(vrtc, vrtc->rtcdev.reg_c | RTCIR_PERIOD);
struct rtcdev *rtc;
rtc = &vrtc->rtcdev;
struct rtcdev *rtc;
rtc = &vrtc->rtcdev;
vrtc_set_reg_c(vrtc, vrtc->rtcdev.reg_c);
oldval = vrtc->rtcdev.reg_a;
CTASSERT(sizeof(struct rtcdev) == 128);
vrtc->rtcdev.reg_a = newval;
CTASSERT(offsetof(struct rtcdev, century) == RTC_CENTURY);
if (offset < offsetof(struct rtcdev, nvram[0]) ||
offset == RTC_CENTURY || offset >= sizeof(struct rtcdev)) {
ptr = (uint8_t *)(&vrtc->rtcdev);
if (offset < 0 || offset >= sizeof(struct rtcdev))
struct rtcdev rtcdev;
ptr = (uint8_t *)(&vrtc->rtcdev);
struct rtcdev *rtc;
rtc = &vrtc->rtcdev;
if (offset >= sizeof(struct rtcdev)) {
*val = vrtc->rtcdev.reg_c;
struct rtcdev *rtc;
rtc = &vrtc->rtcdev;
struct rtcdev *rtc;
rtc = &vrtc->rtcdev;