diff options
author | kato <kato@FreeBSD.org> | 1999-12-27 13:56:54 +0000 |
---|---|---|
committer | kato <kato@FreeBSD.org> | 1999-12-27 13:56:54 +0000 |
commit | 898aba9f292a6cff20adb50dd89684a50a649cc6 (patch) | |
tree | 6b689c07a540b2cbc63cec58bdee0dadc7366931 /sys | |
parent | 3726c476f2fc90721c1da28f2c1da5d2be81b8ed (diff) | |
download | FreeBSD-src-898aba9f292a6cff20adb50dd89684a50a649cc6.zip FreeBSD-src-898aba9f292a6cff20adb50dd89684a50a649cc6.tar.gz |
Synced with sys/i386/isa/clock.c rev 1.148. This is a cosmetic change
because PC-98 doesn't have RTC and RTC related code is included by
`#ifndef PC98' and `#endif'.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/pc98/cbus/clock.c | 20 | ||||
-rw-r--r-- | sys/pc98/cbus/pcrtc.c | 20 | ||||
-rw-r--r-- | sys/pc98/pc98/clock.c | 20 |
3 files changed, 48 insertions, 12 deletions
diff --git a/sys/pc98/cbus/clock.c b/sys/pc98/cbus/clock.c index 1c7e231..9d5c882 100644 --- a/sys/pc98/cbus/clock.c +++ b/sys/pc98/cbus/clock.c @@ -637,23 +637,30 @@ int rtcin(reg) int reg; { + int s; u_char val; + s = splhigh(); outb(IO_RTC, reg); inb(0x84); val = inb(IO_RTC + 1); inb(0x84); + splx(s); return (val); } static __inline void writertc(u_char reg, u_char val) { + int s; + + s = splhigh(); inb(0x84); outb(IO_RTC, reg); inb(0x84); outb(IO_RTC + 1, val); inb(0x84); /* XXX work around wrong order in rtcin() */ + splx(s); } static __inline int @@ -1134,7 +1141,11 @@ inittodr(time_t base) /* wait for time update to complete */ /* If RTCSA_TUP is zero, we have at least 244us before next update */ - while (rtcin(RTC_STATUSA) & RTCSA_TUP); + s = splhigh(); + while (rtcin(RTC_STATUSA) & RTCSA_TUP) { + splx(s); + s = splhigh(); + } days = 0; #ifdef USE_RTC_CENTURY @@ -1144,8 +1155,10 @@ inittodr(time_t base) if (year < 1970) year += 100; #endif - if (year < 1970) + if (year < 1970) { + splx(s); goto wrong_time; + } month = readrtc(RTC_MONTH); for (m = 1; m < month; m++) days += daysinmonth[m-1]; @@ -1168,12 +1181,11 @@ inittodr(time_t base) y = time_second - sec; if (y <= -2 || y >= 2) { /* badly off, adjust it */ - s = splclock(); ts.tv_sec = sec; ts.tv_nsec = 0; set_timecounter(&ts); - splx(s); } + splx(s); return; wrong_time: diff --git a/sys/pc98/cbus/pcrtc.c b/sys/pc98/cbus/pcrtc.c index 1c7e231..9d5c882 100644 --- a/sys/pc98/cbus/pcrtc.c +++ b/sys/pc98/cbus/pcrtc.c @@ -637,23 +637,30 @@ int rtcin(reg) int reg; { + int s; u_char val; + s = splhigh(); outb(IO_RTC, reg); inb(0x84); val = inb(IO_RTC + 1); inb(0x84); + splx(s); return (val); } static __inline void writertc(u_char reg, u_char val) { + int s; + + s = splhigh(); inb(0x84); outb(IO_RTC, reg); inb(0x84); outb(IO_RTC + 1, val); inb(0x84); /* XXX work around wrong order in rtcin() */ + splx(s); } static __inline int @@ -1134,7 +1141,11 @@ inittodr(time_t base) /* wait for time update to complete */ /* If RTCSA_TUP is zero, we have at least 244us before next update */ - while (rtcin(RTC_STATUSA) & RTCSA_TUP); + s = splhigh(); + while (rtcin(RTC_STATUSA) & RTCSA_TUP) { + splx(s); + s = splhigh(); + } days = 0; #ifdef USE_RTC_CENTURY @@ -1144,8 +1155,10 @@ inittodr(time_t base) if (year < 1970) year += 100; #endif - if (year < 1970) + if (year < 1970) { + splx(s); goto wrong_time; + } month = readrtc(RTC_MONTH); for (m = 1; m < month; m++) days += daysinmonth[m-1]; @@ -1168,12 +1181,11 @@ inittodr(time_t base) y = time_second - sec; if (y <= -2 || y >= 2) { /* badly off, adjust it */ - s = splclock(); ts.tv_sec = sec; ts.tv_nsec = 0; set_timecounter(&ts); - splx(s); } + splx(s); return; wrong_time: diff --git a/sys/pc98/pc98/clock.c b/sys/pc98/pc98/clock.c index 1c7e231..9d5c882 100644 --- a/sys/pc98/pc98/clock.c +++ b/sys/pc98/pc98/clock.c @@ -637,23 +637,30 @@ int rtcin(reg) int reg; { + int s; u_char val; + s = splhigh(); outb(IO_RTC, reg); inb(0x84); val = inb(IO_RTC + 1); inb(0x84); + splx(s); return (val); } static __inline void writertc(u_char reg, u_char val) { + int s; + + s = splhigh(); inb(0x84); outb(IO_RTC, reg); inb(0x84); outb(IO_RTC + 1, val); inb(0x84); /* XXX work around wrong order in rtcin() */ + splx(s); } static __inline int @@ -1134,7 +1141,11 @@ inittodr(time_t base) /* wait for time update to complete */ /* If RTCSA_TUP is zero, we have at least 244us before next update */ - while (rtcin(RTC_STATUSA) & RTCSA_TUP); + s = splhigh(); + while (rtcin(RTC_STATUSA) & RTCSA_TUP) { + splx(s); + s = splhigh(); + } days = 0; #ifdef USE_RTC_CENTURY @@ -1144,8 +1155,10 @@ inittodr(time_t base) if (year < 1970) year += 100; #endif - if (year < 1970) + if (year < 1970) { + splx(s); goto wrong_time; + } month = readrtc(RTC_MONTH); for (m = 1; m < month; m++) days += daysinmonth[m-1]; @@ -1168,12 +1181,11 @@ inittodr(time_t base) y = time_second - sec; if (y <= -2 || y >= 2) { /* badly off, adjust it */ - s = splclock(); ts.tv_sec = sec; ts.tv_nsec = 0; set_timecounter(&ts); - splx(s); } + splx(s); return; wrong_time: |