Soren called an said that I screwed up badly, so I backup until

I find out how... Sorry.
This commit is contained in:
Poul-Henning Kamp 1996-01-15 21:12:50 +00:00
parent 7b3eb0017b
commit e95fbcfeb4
5 changed files with 110 additions and 55 deletions

View file

@ -398,18 +398,29 @@ sysbeep(int pitch, int period)
/*
* RTC support routines
*/
static int
bcd2int(int bcd)
{
return(bcd/16 * 10 + bcd%16);
}
static __inline void
static int
int2bcd(int dez)
{
return(dez/10 * 16 + dez%10);
}
static inline void
writertc(u_char reg, u_char val)
{
outb(IO_RTC, reg);
outb(IO_RTC + 1, val);
}
static __inline int
static int
readrtc(int port)
{
return(bcd2bin(rtcin(port)));
return(bcd2int(rtcin(port)));
}
/*
@ -512,9 +523,9 @@ resettodr()
tm -= tz.tz_minuteswest * 60 + adjkerntz;
writertc(RTC_SEC, bin2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, bin2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, bin2bcd(tm%24)); tm /= 24; /* Write back Hours */
writertc(RTC_SEC, int2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, int2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, int2bcd(tm%24)); tm /= 24; /* Write back Hours */
/* We have now the days since 01-01-1970 in tm */
writertc(RTC_WDAY, (tm+4)%7); /* Write back Weekday */
@ -525,10 +536,10 @@ resettodr()
/* Now we have the years in y and the day-of-the-year in tm */
#ifdef USE_RTC_CENTURY
writertc(RTC_YEAR, bin2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, bin2bcd(y/100)); /* ... and Century */
writertc(RTC_YEAR, int2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, int2bcd(y/100)); /* ... and Century */
#else
writertc(RTC_YEAR, bin2bcd(y - 1900)); /* Write back Year */
writertc(RTC_YEAR, int2bcd(y - 1900)); /* Write back Year */
#endif
for (m = 0; ; m++) {
int ml;
@ -541,8 +552,8 @@ resettodr()
tm -= ml;
}
writertc(RTC_MONTH, bin2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, bin2bcd(tm + 1)); /* Write back Month Day */
writertc(RTC_MONTH, int2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, int2bcd(tm + 1)); /* Write back Month Day */
/* Reenable RTC updates and interrupts. */
writertc(RTC_STATUSB, RTCSB_24HR | RTCSB_PINTR);

View file

@ -398,18 +398,29 @@ sysbeep(int pitch, int period)
/*
* RTC support routines
*/
static int
bcd2int(int bcd)
{
return(bcd/16 * 10 + bcd%16);
}
static __inline void
static int
int2bcd(int dez)
{
return(dez/10 * 16 + dez%10);
}
static inline void
writertc(u_char reg, u_char val)
{
outb(IO_RTC, reg);
outb(IO_RTC + 1, val);
}
static __inline int
static int
readrtc(int port)
{
return(bcd2bin(rtcin(port)));
return(bcd2int(rtcin(port)));
}
/*
@ -512,9 +523,9 @@ resettodr()
tm -= tz.tz_minuteswest * 60 + adjkerntz;
writertc(RTC_SEC, bin2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, bin2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, bin2bcd(tm%24)); tm /= 24; /* Write back Hours */
writertc(RTC_SEC, int2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, int2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, int2bcd(tm%24)); tm /= 24; /* Write back Hours */
/* We have now the days since 01-01-1970 in tm */
writertc(RTC_WDAY, (tm+4)%7); /* Write back Weekday */
@ -525,10 +536,10 @@ resettodr()
/* Now we have the years in y and the day-of-the-year in tm */
#ifdef USE_RTC_CENTURY
writertc(RTC_YEAR, bin2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, bin2bcd(y/100)); /* ... and Century */
writertc(RTC_YEAR, int2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, int2bcd(y/100)); /* ... and Century */
#else
writertc(RTC_YEAR, bin2bcd(y - 1900)); /* Write back Year */
writertc(RTC_YEAR, int2bcd(y - 1900)); /* Write back Year */
#endif
for (m = 0; ; m++) {
int ml;
@ -541,8 +552,8 @@ resettodr()
tm -= ml;
}
writertc(RTC_MONTH, bin2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, bin2bcd(tm + 1)); /* Write back Month Day */
writertc(RTC_MONTH, int2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, int2bcd(tm + 1)); /* Write back Month Day */
/* Reenable RTC updates and interrupts. */
writertc(RTC_STATUSB, RTCSB_24HR | RTCSB_PINTR);

View file

@ -398,18 +398,29 @@ sysbeep(int pitch, int period)
/*
* RTC support routines
*/
static int
bcd2int(int bcd)
{
return(bcd/16 * 10 + bcd%16);
}
static __inline void
static int
int2bcd(int dez)
{
return(dez/10 * 16 + dez%10);
}
static inline void
writertc(u_char reg, u_char val)
{
outb(IO_RTC, reg);
outb(IO_RTC + 1, val);
}
static __inline int
static int
readrtc(int port)
{
return(bcd2bin(rtcin(port)));
return(bcd2int(rtcin(port)));
}
/*
@ -512,9 +523,9 @@ resettodr()
tm -= tz.tz_minuteswest * 60 + adjkerntz;
writertc(RTC_SEC, bin2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, bin2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, bin2bcd(tm%24)); tm /= 24; /* Write back Hours */
writertc(RTC_SEC, int2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, int2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, int2bcd(tm%24)); tm /= 24; /* Write back Hours */
/* We have now the days since 01-01-1970 in tm */
writertc(RTC_WDAY, (tm+4)%7); /* Write back Weekday */
@ -525,10 +536,10 @@ resettodr()
/* Now we have the years in y and the day-of-the-year in tm */
#ifdef USE_RTC_CENTURY
writertc(RTC_YEAR, bin2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, bin2bcd(y/100)); /* ... and Century */
writertc(RTC_YEAR, int2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, int2bcd(y/100)); /* ... and Century */
#else
writertc(RTC_YEAR, bin2bcd(y - 1900)); /* Write back Year */
writertc(RTC_YEAR, int2bcd(y - 1900)); /* Write back Year */
#endif
for (m = 0; ; m++) {
int ml;
@ -541,8 +552,8 @@ resettodr()
tm -= ml;
}
writertc(RTC_MONTH, bin2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, bin2bcd(tm + 1)); /* Write back Month Day */
writertc(RTC_MONTH, int2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, int2bcd(tm + 1)); /* Write back Month Day */
/* Reenable RTC updates and interrupts. */
writertc(RTC_STATUSB, RTCSB_24HR | RTCSB_PINTR);

View file

@ -398,18 +398,29 @@ sysbeep(int pitch, int period)
/*
* RTC support routines
*/
static int
bcd2int(int bcd)
{
return(bcd/16 * 10 + bcd%16);
}
static __inline void
static int
int2bcd(int dez)
{
return(dez/10 * 16 + dez%10);
}
static inline void
writertc(u_char reg, u_char val)
{
outb(IO_RTC, reg);
outb(IO_RTC + 1, val);
}
static __inline int
static int
readrtc(int port)
{
return(bcd2bin(rtcin(port)));
return(bcd2int(rtcin(port)));
}
/*
@ -512,9 +523,9 @@ resettodr()
tm -= tz.tz_minuteswest * 60 + adjkerntz;
writertc(RTC_SEC, bin2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, bin2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, bin2bcd(tm%24)); tm /= 24; /* Write back Hours */
writertc(RTC_SEC, int2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, int2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, int2bcd(tm%24)); tm /= 24; /* Write back Hours */
/* We have now the days since 01-01-1970 in tm */
writertc(RTC_WDAY, (tm+4)%7); /* Write back Weekday */
@ -525,10 +536,10 @@ resettodr()
/* Now we have the years in y and the day-of-the-year in tm */
#ifdef USE_RTC_CENTURY
writertc(RTC_YEAR, bin2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, bin2bcd(y/100)); /* ... and Century */
writertc(RTC_YEAR, int2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, int2bcd(y/100)); /* ... and Century */
#else
writertc(RTC_YEAR, bin2bcd(y - 1900)); /* Write back Year */
writertc(RTC_YEAR, int2bcd(y - 1900)); /* Write back Year */
#endif
for (m = 0; ; m++) {
int ml;
@ -541,8 +552,8 @@ resettodr()
tm -= ml;
}
writertc(RTC_MONTH, bin2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, bin2bcd(tm + 1)); /* Write back Month Day */
writertc(RTC_MONTH, int2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, int2bcd(tm + 1)); /* Write back Month Day */
/* Reenable RTC updates and interrupts. */
writertc(RTC_STATUSB, RTCSB_24HR | RTCSB_PINTR);

View file

@ -398,18 +398,29 @@ sysbeep(int pitch, int period)
/*
* RTC support routines
*/
static int
bcd2int(int bcd)
{
return(bcd/16 * 10 + bcd%16);
}
static __inline void
static int
int2bcd(int dez)
{
return(dez/10 * 16 + dez%10);
}
static inline void
writertc(u_char reg, u_char val)
{
outb(IO_RTC, reg);
outb(IO_RTC + 1, val);
}
static __inline int
static int
readrtc(int port)
{
return(bcd2bin(rtcin(port)));
return(bcd2int(rtcin(port)));
}
/*
@ -512,9 +523,9 @@ resettodr()
tm -= tz.tz_minuteswest * 60 + adjkerntz;
writertc(RTC_SEC, bin2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, bin2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, bin2bcd(tm%24)); tm /= 24; /* Write back Hours */
writertc(RTC_SEC, int2bcd(tm%60)); tm /= 60; /* Write back Seconds */
writertc(RTC_MIN, int2bcd(tm%60)); tm /= 60; /* Write back Minutes */
writertc(RTC_HRS, int2bcd(tm%24)); tm /= 24; /* Write back Hours */
/* We have now the days since 01-01-1970 in tm */
writertc(RTC_WDAY, (tm+4)%7); /* Write back Weekday */
@ -525,10 +536,10 @@ resettodr()
/* Now we have the years in y and the day-of-the-year in tm */
#ifdef USE_RTC_CENTURY
writertc(RTC_YEAR, bin2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, bin2bcd(y/100)); /* ... and Century */
writertc(RTC_YEAR, int2bcd(y%100)); /* Write back Year */
writertc(RTC_CENTURY, int2bcd(y/100)); /* ... and Century */
#else
writertc(RTC_YEAR, bin2bcd(y - 1900)); /* Write back Year */
writertc(RTC_YEAR, int2bcd(y - 1900)); /* Write back Year */
#endif
for (m = 0; ; m++) {
int ml;
@ -541,8 +552,8 @@ resettodr()
tm -= ml;
}
writertc(RTC_MONTH, bin2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, bin2bcd(tm + 1)); /* Write back Month Day */
writertc(RTC_MONTH, int2bcd(m + 1)); /* Write back Month */
writertc(RTC_DAY, int2bcd(tm + 1)); /* Write back Month Day */
/* Reenable RTC updates and interrupts. */
writertc(RTC_STATUSB, RTCSB_24HR | RTCSB_PINTR);